中易网

(急)求帮忙写一个C语言程序,大体就是计算一句话中各字母出现的次数,并输出一个数组

答案:1  悬赏:0  
解决时间 2021-01-09 17:39
(急)求帮忙写一个C语言程序,大体就是计算一句话中各字母出现的次数,并输出一个数组
最佳答案
#include
#include
void ReadText(int histo[], int *max) {
int i = 0;
char s[256];
fflush(stdin);
printf("请输入一个英文句子:\n");
gets(s);
while(s[i]) {
if(isalpha(s[i])) {
if(s[i] >= 'a') ++histo[s[i] - 'a'];
else ++histo[s[i] - 'A'];
}
++i;
}
*max = histo[0];
for(i = 1; i < 26; ++i)
if(histo[i] > *max) *max = histo[i];
}

void DrawHist(int histo[], int max) {
int i,j;
for(i = max; i > 0; --i) {
for(j = 0; j < 26; ++j) {
if(histo[j] >= i) printf("| ");
else printf(" ");
}
printf("\n");
}
for(i = 0; i < 26; ++i) printf("+-");
printf("\n");
for(i = 'A'; i <= 'Z'; ++i) printf("%c ",i);
printf("\n\n");
}

void menu() {
int i,an,histo[26] = {0},max = 0;
do {
printf("C : 清除以前读过句子的字母数。\n");
printf("R : 读取一句话。\n");
printf("p : 输出各个字母出现次数。\n");
printf("Q : 退出程序。\n\n");
printf("输入命令: C、R、P 或 Q : ");
fflush(stdin);
an = getchar();
switch(an) {
case 'c' :
case 'C' : for(i = 0; i < 26; ++i) histo[i] = 0; break;
case 'r' :
case 'R' : ReadText(histo,&max); break;
case 'p' :
case 'P' : DrawHist(histo,max); break;
case 'q' :
case 'Q' : break;
default : printf("%c是无效命令。\n",an);break;
}
}while(an != 'Q' && an != 'q');
}

int main() {
menu();
return 0;}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
Sunny男友是谁
香蕉里面发黑了还能吃么?
藏三七花价格 4块1克吗?
“舍友”是什么意思
直来直去用英语怎么说
辣椒移载后怎么管理?
八五六农场第八管理区地址好找么,我有些事要
Windows7常用有哪几种并简述其功能
如何快人一步,让孩子优先进入小学学习状态?
赤峰熬汉旗到北京市延庆多少公里
常用园林绿化植物有哪些?
房贷审批不成功的原因有哪些
机构代码的ca证书的PIN码是什么?我用CA证书
冷媒R410和R22混合用会怎样?
yy频道窗口总在最前怎么取消?
推荐资讯
安徽安庆高新区坐几路公交车
跪求末日丧尸主题类小说。
问一下这是VIXX哪个综艺??
学生当小说编辑去哪个网站
欠平安银行贷贷卡50万没钱还了会坐牢吗
山西临漪到广州多远
热辐射是什么意思?
同为LPL当家花旦,Rita和余霜到底哪个更漂亮
周公解梦梦见我从天而降
有没有老师,空姐,只要黑丝制服就好
我友人决定离开这个世界,在什么地方用什么方
coloros 系统更新,我想问下更新了好还是不好
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?