kid_0203 2015-10-24 14:46 采纳率: 50%
浏览 1572
已采纳

c语言关于字符getchar()的问题

输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数
测试用例 1 ni12$$↵
字母=2,空格=0,数字=2,其它=2↵

下面是我写的程序,思路就是让ch的初始值为0,然后进入for语句循环,直到输入回车为止,中间还加了个if ch='\n' break;用来跳出。但是无论输入什么结果不知为何都是0。。。我上网查说要用while((ch=getchar())!='\n') 但我不太明白我这种方式为何不可以??

 #include <stdio.h>
void main()
{char ch,a=0,b=0,c=0,d=0;
for(ch=0;ch!='\n';)
{ch=getchar();
if ch='\n' break;
if(('a'<=ch&&ch<='z')||('A'<=ch&&ch<='z')) a++;
else {if(ch==' ') b++;
else {if('0'<=ch&&ch<='9') c++;
else else d++;}}}
printf("字母=%d,空格=%d,数字=%d,其他=%d",a,b,c,d);
}
  • 写回答

2条回答 默认 最新

  • threenewbee 2015-10-24 15:50
    关注
     if ch='\n' break;
    

    这个删除

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?