求一段字符串中连续出现次数最多的单个字符
int main()
{
char num[MAX] ;
printf("请输入一个字符串\n");
scanf("%s",num);
char temp ;//记录当前出现最多次数的连续字符
int length = 0;
int curlen;//记录当前字符出现的连续次数
int begin = 0;//开始的位置
int end = 1;//结束的位置
while(num[end]!='\0')
{
if(num[begin]!=num[end])
{
curlen = end - begin;
if(curlen > length)
{
length = curlen;
temp = num[begin];
}
begin = end;
end = end + 1;
}
else
{
end = end + 1;
if(num[end]=='\0')
{
curlen = end - begin + 1;
if(curlen > length)
{
length = curlen;
temp = num[begin];
}
}
}
}
printf("%c",temp);
return 0;
}
按要求分解字符串,输入两个数M,N;M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0。
例如:输入2,8, “abc” ,“123456789”,则输出为“abc00000”,“12345678“,”90000000”
例如:输入2,8, “abc” ,“123456789”,则输出为“abc00000”,“12345678“,”90000000”
void solve(char* str,int n)//str代表输入的字符串、n输出的位数、len字符串的长度
{
int len = strlen(str);
int i = 0;
if(n==len)printf("%s\n",str);
else if(n > len)
{
//char *temp = (char*)malloc(n);
printf("%s",str);
int i = n - len;
while(i--)putchar('0');
}
else if(n < len)
{
int rem = len/n;//商
int quot = len%n;//余数
for( i = 0;i < rem;i++)
{
char *temp = (char*)malloc(n + 1);
memcpy(temp,str + i * n ,n);
temp[n]='\0';
printf("%s",temp);
putchar(' ');
free(temp);
}
char *temp = (char*)malloc(n + 1);
memcpy(temp,str + rem * n ,quot);
temp[quot]='\0';
printf("%s",temp);
i = n - quot;
while(i--)putchar('0');
free(temp);
}
}
int main(void)
{
int i , m , n , len;
char str[1000];
scanf("%d %d", &m , &n) ;
for(i = 0 ; i < m ; ++i)
{
scanf("%s" , str); //接受字符串,后面自动
solve(str , n );
//printf("%d\n",i);
}
return 0;
}