清如许 发表于 2022-11-17 13:43:10

大佬们救救,为什么程序什么都不输出

本帖最后由 清如许 于 2022-11-17 13:44 编辑

这是一个只输出数字的程序,比如输入sdd786sdda,他就只输出786,
但是现在他什么都不输出,请教各位了



#include<stdio.h>
int main()
{
       
        char b;
       
        while((b=getchar())!='\n')         
        {       
                if(b<=9&&b>=0)      //因为字母的asic码较大,所以我设置了这个条件过滤字母
                {
                        printf("%c",b);       
                }
       
       
        }
       
       
       
       
       
       
        return 0;
}

zhangjinxuan 发表于 2022-11-17 13:47:57

本帖最后由 zhangjinxuan 于 2022-11-17 13:50 编辑

设置的有些不对
#include<stdio.h>
int main()
{
      char b;
      
      while((b=getchar())!='\n')         
      {      
                if(b<='9'&&b>='0') //这才是标准判断数字的表达式
                {
                        printf("%c",b);      
                }
      }
      return 0;
}

tommyyu 发表于 2022-11-17 13:48:26

本帖最后由 tommyyu 于 2022-11-17 14:03 编辑

第九行应该是是 '9' 和 '0',因为数字9作为字符时对应的是 ascii 中的水平制表符(HT),而数字1作为字符时对应的是“标题开始”字符(SOH),显然,如果这样写就与你想让程序执行的效果不符。而写 '9'
和 '0' 就可以使程序判断输入的字符的 ascii 值是否是在 48 ~ 57 这个区间上(换句话说,也就是这个字符是不是'0'或'1'或'2'或'3'或'4'或'5'或'6'或'7'或'8'或'9')
ascii 对照表 -> http://c.biancheng.net/c/ascii/

zhangjinxuan 发表于 2022-11-17 13:49:17

tommyyu 发表于 2022-11-17 13:48
第九行应该是是 '9' 和 '0'

哈哈哈,我早一点{:10_256:}

清如许 发表于 2022-11-17 14:01:58

zhangjinxuan 发表于 2022-11-17 13:47
设置的有些不对

哦哦哦谢谢大佬

清如许 发表于 2022-11-17 14:03:12

zhangjinxuan 发表于 2022-11-17 13:49
哈哈哈,我早一点

不好意思,最佳答案手滑点错了{:10_266:}

zhangjinxuan 发表于 2022-11-17 15:16:38

清如许 发表于 2022-11-17 14:03
不好意思,最佳答案手滑点错了

嗯,没事,他说得更全面,就给他吧^_^
页: [1]
查看完整版本: 大佬们救救,为什么程序什么都不输出