这是一个应该找到字符串中最常见元素的程序.但是当我输入一个字符串时它会崩溃.
#include <stdio.h>
#include <conio.h>
#include <string.h>
int main(){
char a[100];
scanf("%s", a);
int max=0,n,k;
int urt = strlen(a);
for(int i=0; i<urt-1; i++){
n=0;
for(int l=i+1; l<urt; l++){
if(a[i]==a[l]) n++;
}
if(max<n){
max=n;
k=i;
}
}
printf("%s\n", a[k]);
printf("%d", max);
getch();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
错误:格式'%s'需要类型'char*'的参数,但参数2的类型为'int'
这意味着你需要改变:
printf("%s\n", a[k]);
Run Code Online (Sandbox Code Playgroud)
至:
printf("%c\n", a[k]);
Run Code Online (Sandbox Code Playgroud)
因为a[k]不是字符串,而是字符.另外,要获得更准确的输出,请添加1到n以考虑您正在扫描的字符(来自外部循环):
n=1; // instead of n=0;
Run Code Online (Sandbox Code Playgroud)