接受一行 ascii 字符串(最大字符数为127个字符)作为输入,并输出出现次数最多的字母(但区分大小写)。如果输入中不包含字母,则显示为 none。如果有多个字符出现次数最多,输出ascii中最小的字母。
例 输入 AAaa 输出 A
输入 123 输出 none
完全找不到思路,求问应该怎么写,谢谢
int main(void)
{
char ch, asc[52] = {0};//asc前26个大写字母,后26个小写字母
int i, max = 0, index = -1;
while ((ch = getchar()) != '\n')
{
if (ch >= 'A' && ch <= 'Z')
asc[ch - 'A']++;
if (ch >= 'a' && ch <= 'z')
asc[ch - 'a' + 26]++;
}
for (i = 0; i < 52; i++)
{
if (asc[i] > max)
{
max = asc[i];
index = i;
}
}
if (index == -1)
printf("none\n");
else
printf("%c\n", (index < 26) ? 'A' + index : 'a' + index - 26);
return 0;
}
#include <stdio.h>
int main(void)
{
char s[127];
int a[127], c[127] = {0};
int i,j,max,min,cnt=0;
gets(s);
for (i = 0; s[i] != '\0'; i++,cnt++){
for (j = 0; s[j] != '\0'; j++){
if (s[j]>='a'&&s[j]<='z' || s[j]>='A'&&s[j]<='Z'){
a[j] = (int)s[j];
if (c[j]==0)
c[j]=1;
if (s[i] == s[j] && i!=j)
c[j]++;
}
}
}
max = c[0];
min = a[0];
for (i = 0; i < cnt; i++){
if (c[i]>max || c[i]==max && a[i]<min){
max = c[i];
min = a[i];
}
}
if (min>0)
printf("%c\n",min);
else
printf("none\n");
return 0;
}