CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

为什么受伤还是我?结果总不对!!

楼主herber(小菜)2003-08-01 22:40:36 在 C/C++ / C语言 提问

其实下面代码很简单的,就是想统计输入的字符类别(数字,英文及其它)。。。  
  可是每回都只有其他,而前两者总是为零!!请大侠帮帮忙。。。我想了好久了。。  
    #include<stdio.h>  
      main()  
      {     char     c;  
          int   charNO   ,alaboNO,otherNO;  
          charNO=0;  
          alaboNO=0;  
          otherNO=0;  
          while(c=getchar()!='\n')  
          {  
              if(   c>='a'&&   c<='z'||c>='A'&&c<='Z')  
    charNO++;  
   
   
              else   if((c>='0')&&(c<='9'))  
  alaboNO++;  
              else  
  otherNO++;  
            }  
        printf("%d",charNO);  
        printf("%d",alaboNO);  
        printf("%d\n",otherNO);  
   
      } 问题点数:0、回复次数:15Top

1 楼fierygnu(va_list)回复于 2003-08-01 22:48:35 得分 0

getchar返回的是int,定义int   c就行了。Top

2 楼fireseed(【VC无敌,英明神武,千秋万代,一统江湖!】—奶油狗)回复于 2003-08-01 22:49:03 得分 0

受伤的总是你是因为你叫杨过Top

3 楼fierygnu(va_list)回复于 2003-08-01 22:49:45 得分 0

看漏了,这里  
  while(c=getchar()!='\n')  
  应该是  
  while((c=getchar())!='\n')  
  赋值操作符的优先级最低。Top

4 楼fireinsky(kakaru)回复于 2003-08-01 22:50:09 得分 0

 
    #include<stdio.h>  
      main()  
      {     char     c;  
          int   charNO   ,alaboNO,otherNO;  
          charNO=0;  
          alaboNO=0;  
          otherNO=0;  
          while((c=getchar())!='\n')  
          {  
              if(   ((c>='a')   &&   (c<='z'))   ||     ((c>='A')   &&   (c<='Z')))  
    charNO++;  
   
   
              else   if((c>='0')&&(c<='9'))  
  alaboNO++;  
              else  
  otherNO++;  
            }  
        printf("%d",charNO);  
        printf("%d",alaboNO);  
        printf("%d\n",otherNO);  
   
      }  
  Top

5 楼Areslp(努力ING)回复于 2003-08-01 22:50:55 得分 0

while((c=getchar())!='\n')这样就可以了:)  
  Top

6 楼fireinsky(kakaru)回复于 2003-08-01 22:51:55 得分 0

好起怪,   都是f开头的:)Top

7 楼steedhorse(晨星)回复于 2003-08-01 22:52:15 得分 0

在拿不准优先级的情况下,一定要加括号——即使拿得准,加上也没有坏处。  
   
  while(c=getchar()!='\n')  
  应改为  
  while((c   =   getch())   !=   '\n')  
   
  if(   c>='a'&&   c<='z'||c>='A'&&c<='Z')  
  应改为:  
  if((c>='a'&&   c<='z')   ||   (c>='A'&&c<='Z'))Top

8 楼steedhorse(晨星)回复于 2003-08-01 22:54:44 得分 0

第二个也可以不改。Top

9 楼Cppasm(沧海一粟)回复于 2003-08-01 23:03:40 得分 0

while(c=getchar()!='\n')  
  这一行,注意运算符的优先级,把它改成while((c=getchar())!='\n')就OK了Top

10 楼direstrait(明天不是猪)回复于 2003-08-02 02:02:15 得分 0

#include<stdio.h>  
  #include<ctype.h>  
      int   main()  
      {     char     c;  
          int   charNO   ,alaboNO,otherNO;  
          charNO=0;  
          alaboNO=0;  
          otherNO=0;  
          while((c=getchar())!='\n')  
          {  
              if(isalpha(c))  
    charNO++;  
   
   
              else   if(isdigit(c))  
  alaboNO++;  
              else  
  otherNO++;  
            }  
        printf("%5d\t",charNO);  
        printf("%5d\t",alaboNO);  
        printf("%5d\n",otherNO);  
  return   0;  
      }  
  用了两个宏,其实没有什么区别,只是提醒一下,如果优先及把握不是太准的话,记得加上括号,就不会有什么问题了.Top

11 楼fierygnu(va_list)回复于 2003-08-02 17:50:51 得分 0

大家应该注意int   c;的问题。虽然在这个例子里不会出什么问题,但如果不注意,在某些场合会成为陷阱的。Top

12 楼WindsonZhL(风之子)回复于 2003-08-02 18:55:18 得分 0

(a=b)!=c   这样的式子正确吗?  
   
  它应该是表示,a=b   这个赋值过程成功则返回1,否则返回0;然后判断c是否等于1(0)。  
  一般来说   a=b   都返回1   。Top

13 楼happycock(SSWW)回复于 2003-08-02 19:19:38 得分 0

a=b返回的是什么,你最好亲自试一试  
  #include   <stdio.h>  
  void   main()  
  {  
  int   a   =   5,   b;  
  printf("%d",b   =   a);  
  }  
  你要知道,可以这样赋值的  
  a=b=c=0;Top

14 楼fierygnu(va_list)回复于 2003-08-02 22:06:18 得分 0

WindsonZhL(风之子)   基本概念不清。Top

15 楼xiaoyi20()回复于 2003-08-02 22:27:21 得分 0

楼主的问题   fireinsky(喜子)解决了。我看可以结贴了。Top

相关问题

  • ========= 为什么受伤的总是我 ====================
  • 为什么受伤的总是我?
  • 为什么受伤的总是我?
  • 为什么受伤的总是我????
  • 为什么受伤的总是我???
  • 为什么结果总是0A0B ?
  • 哇牙牙~~~~~~~~气死我了!!为什么受伤的总是我!!!!!!!!!
  • 为什么受伤的总是我?只因为我是菜鸟???
  • 关于weblogic连接池---为什么受伤的总是我
  • CRecordSet::GetRecordCount()结果为什么总是1呢

关键词

  • alabono
  • charno
  • otherno
  • getchar
  • 返回
  • 问题
  • printf
  • main
  • include
  • char

得分解答快速导航

  • 帖主:herber

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo