题目:
输入一段字符串,要求统计其中的小写字母出现的次数,并按照出现次数的多少依次输出。当出现相同次数的的字符时,按照字母的先后顺序依次输出。假如输入字符串是“mike.lee@ChinaBeijing”,则输出为:
aghjklm : 1
n : 2
ei: 4
代码:
#include<stdio.h>
#include<string.h>
int main(void)
{
int i = 0;
int num = 0;
int flag = 0;
int max = 0;//小写字母出现次数的最大个数
char str1[] = "mike.lee@ChinaBeijing";
char str2[26] = {0};//0 ~ 25 代表a ~ z
for(i = 0; i< strlen(str1); i++)
{
if(('a' <= str1[i]) && ('z' >= str1[i]))
{
//str2[str1[i] - 'a']++ 统计各字母的个数
max = (str2[str1[i] - 'a']++) > max ? (str2[str1[i] - 'a']) : max;
}
}
if(0 == max)//没有小写字母
{
printf("NO MATCHED!\n");
return;
}
//字符输出
for(num = 1; num <= max; num ++)
{
for(i = 0; i < 26; i++)
{
if(str2[i] == num)
{
printf("%c", i + 'a');
flag ++;
}
}
if(flag > 0)
{
flag = 0;
printf(" : %d\n", num);
}
}
return 0;
}