鱼C论坛

 找回密码
 立即注册
查看: 2931|回复: 12

关于if else语句的问题!

[复制链接]
发表于 2013-11-28 11:21:12 | 显示全部楼层 |阅读模式
3鱼币
#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?

最佳答案

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-11-28 11:21:13 | 显示全部楼层
asdasd.JPG   一图千言
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-11-28 12:32:10 | 显示全部楼层
你这个程序是对的。你输入数字当然在区间[0 ,9]中了,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-11-28 14:48:45 | 显示全部楼层
基础C语法,看书。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-11-29 09:06:45 | 显示全部楼层
楼上正解。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-11-29 18:58:19 | 显示全部楼层
目测getcher()每次读取一个字符
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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"); 这是逻辑上的错误 所以编译器没有报错。

如果我这里理解有错误,请高手出场帮我们几位菜鸟指点一下。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-11-29 22:01:23 | 显示全部楼层

字符跟数字可以比较的吧   字符时1字节 32是int型吧  这个应该牵扯到数据类型的自动转换了吧  把字符转为int型然后再做运算   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-11-29 22:08:47 | 显示全部楼层
其实这道题很简单的,printf("input a character: \n");表明你需要输入一个字符,看清楚是一个,所以当你输入好多数字时例如6546594863,编译器默认输入为6,又6的十进制ASCLL码为54大于48小于57,所以必然输出This is a digit     其他也都一样,主要就是比较大小,楼主看的懂的话望采纳啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-11-29 22:09:23 | 显示全部楼层
云客联盟 发表于 2013-11-29 19:16
char接受的是不是字符,拿字符跟32比有用么?这个根本就是无效的:if(c

看下面我的解答
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-11-29 22:09:57 | 显示全部楼层
奥特曼先生 发表于 2013-11-29 18:58
目测getcher()每次读取一个字符

赞同,支持,就是这种情况
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-11-30 21:49:03 | 显示全部楼层
赞同赞同
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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");看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 21:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表