C语言:从键盘输入一篇英文文本,统计每个英文字母(分大小写)及空格、数字、回车和其他字符,咋编?

要求:
1)输入长短无限制,可有多行,以EOF结束。
2)输出格式为每一项目一行,如A:7,Space: 10等。
3)先输出数字,再输出大写字母,接着输出小写字母,最后输出空格、回车和其他字符。

程序代码:

#include <stdio.h>
#include <string.h>

#define MAX 10000

void input(char source[]);
void output(int sign[], int n);

void main()
{
char source[MAX];
int sign[256];
int i;

input(source);

for(i=0; i<256; i++)
{
sign[i] = 0;
}

//统计字符串中每个字符的数量
for(i=0; i<strlen(source); i++)
{
sign[source[i]]++;
}

output(sign, 256);
}

void input(char source[])
{
int i;

printf("input a string(end of EOF) : ");
for(i=0; i<MAX-1 && (source[i]=getchar())!=EOF; i++);
source[i] = '\0';
}

void output(int sign[], int n)
{
int i;

//输出数字
for(i='0'; i<'0'+10; i++)
{
printf("%c : %d\n", (char) i, sign[i]);
}

//输出大写字母
for(i='A'; i<'A'+26; i++)
{
printf("%c : %d\n", (char) i, sign[i]);
}

//输出小写字母
for(i='a'; 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' && i<='Z') && !(i>='a' && i<='z') && i!=32 && i!=13)
{
printf("%c : %d\n", (char) i, sign[i]);
}
}
}


运行测试:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-09-08

代码文本:

#include "stdio.h"

int main(int argc,char *argv[]){

int s[128],i,t;

for(i=0;i<128;s[i++]=0);

printf("Please enter a text...\n");

while((i=getchar())!=EOF)

s[i]++;

for(t=i=0;i<128;i++)

if(s[i]){

if(i>='a' && i<='z' || i>='A' && i<='Z' || i>='0' && i<='9')

printf("%c:\t%d\n",i,s[i]);

else if(s[i]!=' ' && s[i]!='\n')

t++;

}

printf("Space:\t%d\n",s[' ']);

printf("Enter:\t%d\n",s['\n']);

if(t)

printf("Other:\t%d\n",t);

return 0;

}

本回答被提问者采纳
第2个回答  2020-09-07
可以用一个单重的循环实现,每次读入一个字符,再按字符的特征进行分类的统计计数。到最后,按规定的顺序输出各类字符的读数值。本回答被网友采纳
第3个回答  2020-09-07
从键盘输入一篇英文文本统计,每个英文字母分为大小写,空阔个数字。
第4个回答  2020-09-09
键盘输入字符串,一旦回车,就输入结束了。
输入语句,也就结束了。
那么,每输入一行,只有一个回车,也必须有一个。
 
要求输入多行,就得执行多次输入语句。
最后,输入一个空白的行,仅有回车,结束全部输入。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网