输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数

#include<string.h>#include<stdio.h>main(){charc;intw=0,x=0,y=0,z=0;while((c=getchar()... #include<string.h>
#include<stdio.h>
main()
{char c;
int w=0,x=0,y=0,z=0;
while((c=getchar())!='\n')
{if((c>='a'&& c<='z')||(c>='A' && c<='z'))
w++;
else if (c==' ')
x++;
else if (c>='0' && c<='9')
y++;
else
z++;
}
printf("w=%d,x=%d,y=%d,z=%d",w,x,y,z);
}

这个程序运行是对的,但我有点看不明白
题目是输入一行字符,程序中c=getchar()是单个字符输入呀!应该改成c=gets()
请高手指点。
展开
 我来答
成功还宝贵灬宝贝I
推荐于2017-09-17 · TA获得超过280个赞
知道答主
回答量:98
采纳率:0%
帮助的人:0
展开全部
可以这样理解
当你在键盘输入的时候
程序已经开始运行了
当输入第一个字符的时候,程序已经开始判断了
输入以后 程序判断结束 变量自加完毕
输入第二个的时候 重复上面的程序操作
当遇到换行的时候 循环结束

当输入一行字符的时候
getchar()会每个字符每个字符的进行获取 知道获取到换行符的时候循环才结束
如果还有什么疑问 可以加我百度hi pengxuewanp
匿名用户
2009-02-09
展开全部
c=getchar()确实是单个字符输入,
但是他是放在while循环中的,
所以具体的实现就是一个字符一个字符的读入,
直到读到回车'\n'结束循环,
在进行字符的读入时,分析也就完成了。
这样比c=gets() ,先全部读入再一个个分析的效率要高
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
负家子弟
2009-02-10 · TA获得超过3567个赞
知道大有可为答主
回答量:1336
采纳率:0%
帮助的人:1471万
展开全部
#include "stdio.h"
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存入字母数*/
}
else if(s==' ') j++; /*j存入空格数,注意s==' '里面是有一个空格的*/
else if(s47)k++; /*k存入数字数*/
else m++; /*m存入其它符号数*/
}
printf("char:%d Capital letters:%d Lowercase%d\nspec:%d\nnumber:%d\nOther:%d\n",i,da,xiao,j,k,m); /*打印行中的字母,空格,数字,其它字符数*/
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
之晖尾智菱
2019-05-07 · TA获得超过3819个赞
知道大有可为答主
回答量:3138
采纳率:31%
帮助的人:173万
展开全部
你输入为'\n'后还进行了一次循环并将qita加1,改成这样
while
(1)
{
scanf("%c",&_q);
if(_q
==
'\n')
break;
else
if(_q>='A'&&_q<='Z'||_q>='a'&&_q<='z')
zimu++;
else
if(_q>='0'&&_q<='9')
shuzi++;
else
if(_q=='
')
kongge++;
else
qita++;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
大蛇布妖5515
2009-02-09
知道答主
回答量:61
采纳率:0%
帮助的人:0
展开全部
因为有循环
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式