
2条回答 默认 最新
技术专家团-小桥流水 2021-12-15 00:00关注定义一个数组int zm[26],记录字母出现的次数,
定义一个char数组 char cc[26],值是从a-z
统计完字母的次数后,根据次数多少排序,cc数组随之排序.
代码如下:
#include <stdio.h> int main() { char buf[100]; int i,j,t; int zm[26]={0}; //字母对应的数量 char cc[26]; char ch; for(i=0;i<26;i++) cc[i] = 'a'+i; gets(buf);//读取一行字符串 i=0; while (buf[i] != '\0') { if(buf[i]>='a' && buf[i]<='z') zm[buf[i]-'a'] += 1; else if(buf[i]>='A' && buf[i]<='Z') zm[buf[i]-'A'] += 1; i++; } //排序 for (i=0;i<25;i++) { for (j=0;j<25-i;j++) { if(zm[j] < zm[j+1]) { t = zm[j]; zm[j]=zm[j+1]; zm[j+1]=t; ch = cc[j]; cc[j] = cc[j+1]; cc[j+1]=ch; } } } //输出 for(i=0;i<26;i++) { if(zm[i] > 0) { printf("%c %d\n",cc[i],zm[i]); } } return 0; }本回答被题主选为最佳回答 , 对您是否有帮助呢?评论 打赏 举报 编辑记录解决 1无用