输入字符串(长度小于50),统计每个大写字母出现的次数,输出出现次数最高的大写字母及其出现次数。如果出现次数最高的大写字母有多个,则输出ASCII码值最小的字母及其次数。
以下是我写的代码但是运行得不出我想要的结果。
#include<stdio.h>
int main()
{
char a;
int c[26] = { 0 };
int b[26] = { 0 };
int i=0, g, h, t, l;
printf("请输入长度不超过50的大写字母:");
while ((a = getchar()) != '\n')
{
if (a == 'A')
c[0] = b[0]++;
if (a == 'B')
c[1] = b[1]++;
if (a == 'C')
c[2] = b[2]++;
if (a == 'D')
c[3] = b[3]++;
if (a == 'E')
c[4] = b[4]++;
if (a == 'F')
c[5] = b[5]++;
if (a == 'G')
c[6] = b[6]++;
if (a == 'H')
c[7] = b[7]++;
if (a == 'I')
c[8] = b[8]++;
if (a == 'J')
c[9] = b[9]++;
if (a == 'K')
c[10] = b[10]++;
if (a == 'L')
c[11] = b[11]++;
if (a == 'M')
c[12] = b[12]++;
if (a == 'N')
c[13] = b[13]++;
if (a == 'O')
c[14] = b[14]++;
if (a == 'P')
c[15] = b[15]++;
if (a == 'Q')
c[16] = b[16]++;
if (a == 'R')
c[17] = b[17]++;
if (a == 'S')
c[18] = b[18]++;
if (a == 'T')
c[19] = b[19]++;
if (a == 'U')
c[20] = b[20]++;
if (a == 'V')
c[21] = b[21]++;
if (a == 'W')
c[22] = b[22]++;
if (a == 'X')
c[23] = b[23]++;
if (a == 'Y')
c[24] = b[24]++;
if (a == 'Z')
c[25] = b[25]++;
i++;
}
if (i>50)
printf("请重新输入");
for (l = 0; l<26; l++)
printf("%d", b[l]);
for (g = 0; g<25; g++)
for (h = 0; h<25 - g; h++)
{
if (b[h]<b[h + 1])
{
t = b[h];
b[h] = b[h + 1];
b[h + 1] = t;
}
}
printf("\n");
for (l = 0; l<26; l++)
printf("%d", b[l]);
g = 0;
for (g; g < 26; g++)
{
a = 65;
for (h = 0; h < 26; h++)
{
printf("%c", a);
if (b[g] == c[h] && c[h] != 0)
{
printf("%c", a);
}
a++;
}
printf("\n");
}
}