飞驰吧!少年 发表于 2013-11-28 11:21:12

关于if else语句的问题!

#include < stdio.h >
void main()
{
        char c;
        printf("input a character: \n");
        c=getchar();
        if(c<32) printf("this is a control character\n");
        else if(c>='0' && c<='9') printf("This is a digit\n");
        else if(c>='A' && c<='Z') printf("This is a capital letter\n");
        else if(c>='a' && c<='z') printf("This is a small letter\n");
        else printf("This is an other character\n");
       
}
为什么不管输入什么数字,只能显示This is a digit?

格式天下 发表于 2013-11-28 11:21:13

一图千言

风のQ 发表于 2013-11-28 12:32:10

你这个程序是对的。你输入数字当然在区间中了,

my_angel 发表于 2013-11-28 14:48:45

基础C语法,看书。。

eleven_xxq 发表于 2013-11-29 09:06:45

{:5_106:}楼上正解。

奥特曼先生 发表于 2013-11-29 18:58:19

目测getcher()每次读取一个字符

云客联盟 发表于 2013-11-29 19:16:22

char接受的是不是字符,拿字符跟32比有用么?#include <stdio.h>

void main()
{
      char c;
      printf("input a character: \n");
      c=getchar();
      if(c>='0' && c<='9')
                {
                        printf("This is a digit\n");
                }
      else if(c>='A' && c<='Z')
                {
                        printf("This is a capital letter\n");
                }
      else if(c>='a' && c<='z')
                {
                        printf("This is a small letter\n");
                }
      else
                {
                        printf("This is an other character\n");
                }
}这个根本就是无效的:if(c<32) printf("this is a control character\n"); 这是逻辑上的错误 所以编译器没有报错。

如果我这里理解有错误,请高手出场帮我们几位菜鸟指点一下。

maomingkun 发表于 2013-11-29 22:01:23

云客联盟 发表于 2013-11-29 19:16 static/image/common/back.gif
char接受的是不是字符,拿字符跟32比有用么?这个根本就是无效的:if(c

字符跟数字可以比较的吧   字符时1字节 32是int型吧这个应该牵扯到数据类型的自动转换了吧把字符转为int型然后再做运算   

︶ㄣ痕迹の天涯 发表于 2013-11-29 22:08:47

其实这道题很简单的,printf("input a character: \n");表明你需要输入一个字符,看清楚是一个,所以当你输入好多数字时例如6546594863,编译器默认输入为6,又6的十进制ASCLL码为54大于48小于57,所以必然输出This is a digit   其他也都一样,主要就是比较大小,楼主看的懂的话望采纳啊

︶ㄣ痕迹の天涯 发表于 2013-11-29 22:09:23

云客联盟 发表于 2013-11-29 19:16 static/image/common/back.gif
char接受的是不是字符,拿字符跟32比有用么?这个根本就是无效的:if(c

看下面我的解答

︶ㄣ痕迹の天涯 发表于 2013-11-29 22:09:57

奥特曼先生 发表于 2013-11-29 18:58 static/image/common/back.gif
目测getcher()每次读取一个字符

赞同,支持,就是这种情况

o_O) 发表于 2013-11-30 21:49:03

赞同赞同{:5_108:}

Heeg 发表于 2013-12-3 23:43:52

if(c<32) printf("this is a control character\n");
改成if('c'<32)
         printf("this is a control character\n");看看
页: [1]
查看完整版本: 关于if else语句的问题!