编写一个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;
}本回答被网友采纳

编写一个C语言程序:从键盘读入一行文本,统计每个英文字母出现的次数...
=0)printf("%c\\t%d\\n",i+65,count[i]

编写一个C语言程序:从键盘读入一行文本,统计每个英文字母出现的次数
一、算法:1、循环读取字符,直到换行为止。对于每个字符,执行以下流程。2、判断是否为英文字母,即小写和大写两种。3、如果是英文字母,则统计个数。输入部分,可以存为数组,也可以每输入一个字符计算一次。二、参考代码:include <stdio.h>int main(){ int c; int cnt[52]={0}; whil...

C语言编程:输入一串英文字母,统计每个字母(不区分大小写)出现的次数
include<iostream> include<string> using namespace std;int main(){ char str[50];int n=0;char *p;p=str;cout<<"请输入字符串:"<<endl;cin>>str;for(int i=0;*p!='\\0';p++){ if(('a'<=*p && *p<='z') || ('A'<=*p && *p<='Z')){ n++;cout<<*p<<" ";} el...

c语言 从键盘输入一行字符,分别统计其中数字字符,字母字符和其他字符...
printf("%d%d%d\\n",a,b,c);\/\/输出结果。return0;}

C语言:从键盘输入一篇英文文本,统计每个英文字母(分大小写)及空格、数...
i<'a'+26; i++){printf("%c : %d\\n", (char) i, sign[i]);}\/\/输出空格i = 32;printf("Space : %d\\n", sign[i]);\/\/输出回车i = 10;printf("Enter : %d\\n", sign[i]);\/\/输出其他字符for(i=0; i<256; i++){if(!(i>='0' && i<='9') && !(i>='A' &&...

输入一行字符,分别统计出其中英文字母(包括大小写)、空格、数字和其他字...
int letters=0,spaces=0,digits=0,others=0;printf("请输入一串任意的字符:\\n");while((c=getchar())!='\\n'){ if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))letters++;else if(c>='0'&&c<='9')digits++;else if(c==' ')spaces++;else others++;} printf("字母有%d个...

C语言,输入一行,分别统计出其中的英文字母,数字和其他字符的个数,并...
{ char a[N];int i,m=0,n=0,b=0,c=0;printf("Input a string:");gets(a);for(i=0;a[i]!='\\0';i++){ if(a[i]>='a'&&a[i]<='z'||a[i]>='A'&&a[i]<='Z')m++;else if(a[i]>='0'&&a[i]<='9')n++;else if(a[i]==' ')b++;else c++;} print...

C语言编程:输入一行字符,统计出其中英文字母、空格、数字和其他字符的个...
呵呵,下面是C的,其实这里输入的时候输入空格就被认为输入中止,所以计算空格没意义,所以目前有个假设空格能输入哈 include<stdio.h> void main(){ int nE=0,nS=0,nN=0,nO=0,i=0;char a[1000];scanf("%s",a);while (a[i]!='\\0') { if (a[i]<='z' && a[i]>='a' || a[i...

C语言,输入一行,分别统计出其中的英文字母,数字和其他字符的个数,并...
void main(){ char s;int i=0,j=0,k=0,m=0,da=0,xiao=0;printf("please input the string\\n");while((s=getchar())!='\\n') \/*循环从键盘读入字符直到一行结束(输入回车)*\/ { if((s='a')||(s'A')){ if(s='A')da++;if(s='a')xiao++;i++; \/*i存入字母数*\/ ...

...要求:输入一段字符,分别统计出其中的英文字母、空格、数字和其他字...
你好!给你一个程序,你试试吧,有问题再问 include <stdio.h>#include <string.h>main(){char c[20];int i=0,j=0,k=0,l=0,h=0;printf("请输入一个字符串:");gets(c); for(i=0;i<=strlen(c);i++){if(c[i]>='0'&&c[i]<='9')j++;if((c[i]>='a'&&c[i]<=...

相似回答