(急)求帮忙写一个C语言程序,大体就是计算一句话中各字母出现的次数,并输出一个数组
答案:1 悬赏:0
解决时间 2021-01-09 17:39
- 提问者网友:沉默菋噵
- 2021-01-09 07:11
(急)求帮忙写一个C语言程序,大体就是计算一句话中各字母出现的次数,并输出一个数组
最佳答案
- 二级知识专家网友:一袍清酒付
- 2021-01-09 08:07
#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;}
#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;}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯