写了一个,谨作参考。
程序代码:/*------------------------------------------------------------------------------
输入一串字符,统计并输出字符串中出现频率最高的字母及出现次数,可能有多个
出现频率最高的字母,字母不区分大小写,输出时用大写字母,输出格式printf("%c:
%d\t", );程序说明:用数组来统计各字母个数。如:用a[0]统计’a’字母的个数,
a[25]统计’z’字母的个数.
------------------------------------------------------------------------------*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<ctype.h>
#define N 100
#define Y 26
int cmp(const void *a,const void *b)
{
return(*(char *)a-*(char *)b);
}
void SWITCH(char *a) /* 字符变换,全部变换成大写字母 */
{
while(*a)
{
*a=toupper(*a);
a++;
}
}
void sta()
{
char _a[N],*a;
int _b[Y]={0},max,i,*b;
a=_a;
b=_b;
puts("input a[]:");
gets(a); /* 输入 */
SWITCH(a); /* 变换 */
qsort(a,strlen(a),sizeof(a[0]),cmp); /* 排序 */
while(*a)
{
if(*a>=65&&*a<=90&&*a==*(a+1))
b[*a-65]++;
a++;
} /* 记数器数组 b 赋值 */
for(max=*b,i=0;i<Y;++i)
if(max<*(b+i)) max=*(b+i); /* 找出最大值 */
for(i=0;i<Y;++i)
if(max==b[i]) printf("%c--%d\n",i+65,b[i]+1); /* 输出 */
}
int main(void)
{
sta();
return 0;
}









