题目大意
ACWing原题跳转链接
第一行一个整数N,表示测试数据的组数。
每组数据占一行,包含一个不含空白字符的字符串,字符串长度不超过200。
共一行,输出最长的连续出现的字符机器出现次数,中间用空格隔开。
这道题我的代码确实没有啥问题(在acwing上确实可以ac)
#include<stdio.h>
#include<string.h>
int main(){
int n;
char a[202];
scanf("%d",&n);
getchar();
while(n--){
gets(a);
int num=strlen(a);
a[num]='\0';
int m,k=1,p,max=0;
char ans=' ';
for(int i=0;i<num;i++){
if(a[i]==a[i+1]) k++;
else{
if(max<k) {
ans=a[i];
max=k;
}
k=1;
}
} printf("%c %d ",ans,max);
if(n)printf("\n");
}return 0;
}
但是过不去,那么问题就出在了gets这上面,替换掉gets就对了,gets函数本身来说就不是一个安全的函数,所以说能不用就别用,(这道题直接自闭),gets能别用就被用,千万别用,血的教训!!!
#include<stdio.h>
#include<string.h>
int main(){
int n;
char a[202];
scanf("%d",&n);
getchar();
while(n--){
// gets(a);把gets就改成底下的,注意加上getchar()
scanf("%s",a);
getchar();
int num=strlen(a);
a[num]='\0';
int m,k=1,p,max=0;
char ans=' ';
for(int i=0;i<num;i++){
if(a[i]==a[i+1]) k++;
else{
if(max<k) {
ans=a[i];
max=k;
}
k=1;
}
} printf("%c %d ",ans,max);
if(n)printf("\n");
}return 0;
}