搜索
查看: 1567|回复: 3
打印 上一主题 下一主题

统计字符的问题

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-15 15:09:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
/*
循环输入字符,统计字母,数字和其它符号的个数,
退出循环时输入字母y或者Y的时候,输出统计的字母的数字个数,
输入N或着n的时候,输出统计的其它字符的个数。*/
#include<stdio.h>

int main(){
        char code;
        int sum_sz=0,sum_zm=0,sum_zf=0;

        while(code!='Y'&&code!='y'&&code!='N'&&code!='n')       
        {       
        code=getchar();
                if(code>='A'&&code<='Z'||code>='a'&&code<='z')
                        sum_zm++;
                else if(code>='0'&&code<='9')
                        sum_sz++;
                else
                        sum_zf++;
    }

if(code=='y'||'Y')
  {  printf("数字:%d\n",sum_sz);
        printf("字母:%d\n",sum_zm);
}
else       
                printf("其它:%d\n",sum_zf);
   sleep(5000);


       return 0;

}

不管我是输入y(Y),还是输入n(N).就是不执行

else        后面的语句。
                printf("其它:%d\n",sum_zf);

想了好久没发现什么问题。请教各位l。。。。。。。

最佳答案

查看完整内容

问题出在这一句 'y'||'Y'会被求值,你想要的是此外code给一个初始值比较安全,不然可能初始的随机值就是y这些,然后直接不执行了 或者循环前面也加一句code = getchar()
沙发
发表于 2013-3-15 15:09:58 | 只看该作者
  1. if(code=='y'||'Y')
复制代码
问题出在这一句
'y'||'Y'会被求值,你想要的是
  1. if(code=='y' || code=='Y')
复制代码
此外code给一个初始值比较安全,不然可能初始的随机值就是y这些,然后直接不执行了
或者循环前面也加一句code = getchar()
板凳
发表于 2013-3-15 19:48:49 | 只看该作者
不要sleep(5000);
地板
 楼主| 发表于 2013-3-18 21:21:11 | 只看该作者
rosynirvana 发表于 2013-3-15 21:59
问题出在这一句
'y'||'Y'会被求值,你想要的是此外code给一个初始值比较安全,不然可能初始的随机值就是y这 ...

多谢指点。看书也要带着问号读。千万不要全相信书中的知识。老实点,一句句写代码。不能耍小聪明。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表