编写一个C语言程序:从键盘读入一行文本,统计每个英文字母出现的次数

如题所述

对于每个英文字母分别判断个数,并累计,最终输出即可。

一、算法:

1、循环读取字符,直到换行为止。对于每个字符,执行以下流程。

2、判断是否为英文字母,即小写和大写两种。

3、如果是英文字母,则统计个数。

输入部分,可以存为数组,也可以每输入一个字符计算一次。

二、参考代码:

#include <stdio.h>
int main()
{
    int c;
    int cnt[52]={0};
    while((c=getchar())!='\n')//读取每个字符,直到遇到换行为止。
    {
        if(c>='A'&&c<='Z')//大写
            cnt[c-'A'] ++;//统计。
        else if(c>='a'&&c<='z')//小写
            cnt[c-'a'+26] ++;//统计。
    }
    for(c=0;c<26;c++)//输出大写字母统计结果。
        if(cnt[c]!=0) printf("%c:%d\n", c+'A', cnt[c]);
    for(c=26;c<52;c++)//输出大写字母统计结果。
        if(cnt[c]!=0) printf("%c:%d\n", c-26+'a', cnt[c]);
    return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-22
#include <stdio.h>
int main(void)
{int i;
char j;
char a;
int b[26]={0};
while ((a = getchar()) != '\n')
{
for (j='A';j<='Z';++j)
{
if (a == j || a == j+('a'-'A'))
{
b[j-'A']++;
}
}
}
for (i=0;i<26;++i)
{
if (b[i] == 0)
{
continue;
}
else
{
printf("'%c':%d\n",i+'A',b[i]);
}
}
printf("\n");
}追问

运行以后不对

追答

本回答被提问者采纳
第2个回答  推荐于2018-02-10
#include <stdio.h>
#include <stdlib.h>

#define MAX 100

int main()
{
char str[MAX]; // 输入的字符串,最大长度是MAX-1,因为有一个字符串结束符
int i = 0, count[52] = { 0 }; // count 数组用来存储各个字母出现的次数
scanf("%s", str);
while(str[i] != '\0') {
if (str[i] >= 'a' && str[i] <= 'z') { // 统计小写字母
count[str[i] - 97 + 26]++;
}
if (str[i] >= 'A' && str[i] <= 'Z') { // 统计大写字母
count[str[i] - 65]++;
}
i++;
}
for (i = 0; i < 26; i++) { // 输出大写字母信息
if (count[i] != 0)
printf("%c\t%d\n", i + 65, count[i]); // 只输出不为零的数据
}
for (i = 26; i < 52; i++) { // 输出小写字母信息
if (count[i] != 0)
printf("%c\t%d\n", i + 97 - 26, count[i]);
}
return 0;
}本回答被网友采纳
相似回答