给定一段文字,长度不超过1000,统计文字中各个大写字母的出现次数,
并按照出现次数的降序输出该字母和其出现的次数。
假设各个大写字母出现的次数不会相同。
# include<stdio.h>
# include<string.h>
/*给定一段文字,长度不超过1000,统计文字中各个大写字母的出现次数,
并按照出现次数的降序输出该字母和其出现的次数。
假设各个大写字母出现的次数不会相同。*/
typedef struct chara
{
int num;
char lett;
}letter;
letter a[26] ;
letter max;
int main()
{
int len;
char str[1001] = {0};
int temp = 0;
scanf("%s", &str);
len = strlen(str);
for(int i = 0; i < 26; i++)
{
a[i].lett = 'A' + i;
}
for(int i = 0; i < len; i ++)
{
if(str[i] >= 'A' && str[i] <= 'Z')
{
temp = str[i] - 'A';
a[temp].num ++;
}
}
int j, Max;
for(int i = 0; i < 25; i ++)
{
max = a[i];
Max = i;
for(int j = i ; j < 26; j ++)
{
if(max.num < a[j].num)
{
max = a[j];
Max = j;
}
}
max = a[i];
a[i] = a[Max];
a[Max] = max;
}
for(int i = 0; i < 26; i++)
{
if(a[i].num != 0)
{
printf("%c %d\n", a[i].lett, a[i].num);
}
}
return 0;
}