#include <stdio.h>
int main()
{
int a[26][2],i,j,t;
char c;
for(i=0;i<26;i++)
{
a[i][1]=0;
a[i][0]=97+i;
}
//二维数组的第一列存放字母,第二列存放频率
while((c=getchar())!='\n')
a[c-97][1]++;
//选择法排序
for(i=0;i<25;i++)
for(j=i+1;j<26;j++)
if(a[i][1]<a[j][1])
{
t=a[i][1];
a[i][1]=a[j][1];
a[j][1]=t;
t=a[i][0];
a[i][0]=a[j][0];
a[j][0]=t;
}
for(i=0;i<26;i++)
printf("%c:%d\t",a[i][0],a[i][1]);
printf("\n");
return 0;
}
应该没错,你试看吧!