请问C语言问题!编写程序,输入若干个字符,分别统计其中英文字母、数字字符和其他字符的个数。

编写程序,输入若干个字符,分别统计其中英文字母、数字字符和其他字符的个数。
#include<stdio.h>
int main(void)
{
char a;
int yw=0,sz=0,qt=0;
printf("输入若干字符:");
while((a=getchar())!='\n');
{
if(a>='a'&&a<='z'||a<='Z'&&a>='A')
yw=++yw;
else if((a>='0')&&(a<='9'))
sz=sz++;
else
qt=qt++;
}
printf("yw:%d\nsz:%d\nqt:%d\n",yw,sz,qt);

return 0;
}

最后输出的就是 0 0 1 不管打进去什么数字 请问为什么

把while循环后的那个分号去掉.
++yw;行
sz++; qt++;也行

就是不能yw=++yw; sz=sz++; qt=qt++;这么写追问

为什么呢求指教!

追答

while后的分号是一个空语句,这样你接收到的东西只有最后一个非'\n'的字符存在了a里面.
自增自减运算符本身就有赋值的副作用,yw=++yw;你这么做是多此一举..
sz=sz++; 除了多此一举,你这么做甚至可能导致出错.

追问

谢谢!!

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

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