C语言字符统计
解决时间 2021-01-03 19:16
- 提问者网友:焚苦与心
- 2021-01-02 21:00
给出一串字符,要求统计出里面的字母、数字、空格以及其他字符的个数。
字母:A, B, ..., Z、a, b, ..., z组成
数字:0, 1, ..., 9
空格:" "(不包括引号)
剩下的可打印字符全为其他字符。
输入
测试数据有多组。
每组数据为一行(长度不超过100000)。
数据至文件结束(EOF)为止。
输出
每组输入对应一行输出。
包括四个整数a b c d,分别代表字母、数字、空格和其他字符的个数。
样例输入
A0 ,
样例输出
1 1 1 1
我的答案
#include
int main()
{
int a=0,b=0,c=0,d=0;
char e;
while(scanf("%c",&e)!=EOF)
{
if((e>='a'&&e<='z')||(e>='A'&&e<='Z'))
a++;
else if(e>='0'&&e<='9')
b++;
else if(e==' ')
c++;
else
d++;
}
printf("%d %d %d %d\n",a,b,c,d);
return 0;
}
没有输出的,错在哪儿呢???
求指教
最佳答案
- 五星知识达人网友:不想翻身的咸鱼
- 2021-01-06 17:21
#include
#include
int main()
{
int a=0,b=0,c=0,d=0;
char e;
while((e=getch())!=13)
{
printf("%c",e);
if((e>='a'&&e<='z')||(e>='A'&&e<='Z'))
a++;
else if(e>='0'&&e<='9')
b++;
else if(e==' ')
c++;
else
d++;
}
printf("%d %d %d %d\n",a,b,c,d);
return 0;
}
回车结束输入
你的EOF是end of file这是屏幕输入不是从磁盘文件读取,而且scanf只有在回车之后才执行什么的。。。。
全部回答
#include
int main()
{
int a=0,b=0,c=0,d=0;
char e;
while((e=getchar())!='\n')
{
if((e>='a'&&e<='z')||(e>='A'&&e<='Z'))
a++;
else if(e>='0'&&e<='9')
b++;
else if(e==' ')
c++;
else
d++;
}
printf("%d %d %d %d\n",a,b,c,d);
getch();
}
EOF不适合用在这里
while(scanf("%c",&e)!=EOF)
改成while(e=getchar()!=EOF)就有结果了,但是你程序有点问题,就拿例子来说,结果不是预想的那样。
改成while((e=getchar())!=EOF)
输完文件后按 ctrl+z 回车 便可
- 4楼网友:躲不过心动
- 2021-01-06 18:50
#include <stdio.h>
void main()
{
char str[50];
int i,ecnt,ncnt,kcnt,other;
i=ecnt=ncnt=kcnt=other=0;
gets(str);
while(str[i])
{
if((str[i]>='a'&&str[i]<='z')||(str[i]>='a'&&str[i]<='z'))
ecnt++;
else if(str[i]>='0'&&str[i]<='9')
ncnt++;
else if(str[i]==' ')
kcnt++;
else
other++;
i++;
}
printf("字母:%d 数字:%d 空格:%d 其他:%d\n",ecnt,ncnt,kcnt,other);
//直接用汉字了.如果无法输出汉字的话,可以改成英语...
}
运行截图:
我要举报
大家都在看
推荐资讯