鱼C论坛

 找回密码
 立即注册
查看: 1861|回复: 6

[已解决]s1e13内容

[复制链接]
发表于 2021-8-12 16:20:55 | 显示全部楼层 |阅读模式
10鱼币
萌新想问一下为什么输入0不会得到输出的0,困扰我一下午了
求帮助(代码挺啰嗦的,不够简洁,很抱歉)
  1. #include<stdio.h>
  2. #include<math.h>
  3. int main()
  4. {
  5.     int a;
  6.     long long b=0;
  7.     long long e=0;
  8.     char f;
  9.     const int c=pow(2,sizeof(int)*8)/2-1;
  10.     const int d=pow(2,sizeof(int)*8)/2*(-1);
  11.         while((a=getchar())!='\n')
  12.         {
  13.                 f=a;
  14.                 if(a>='0'&&a<='9')
  15.                 {
  16.                         b=10*b+(a-'0');
  17.                 }
  18.         }
  19.                 {
  20.                         if(b>=d&&b<=c)
  21.                         {
  22.                                 if(b!=0)
  23.                                 printf("%lld",b);
  24.                         }
  25.                         else
  26.                         {
  27.                                 printf("超出定义范围");
  28.                                 return 0;
  29.                         }
  30.                 }
  31.                 if(b!=0)
  32.                 {
  33.                                 while(1)
  34.                         {
  35.                                 printf("\n");
  36.                                 while((a=getchar())!='\n')
  37.                                 {
  38.                                         e=10*e+(a-'0');
  39.                                 }
  40.                                 if(e>=d&&e<=c)
  41.                                 {
  42.                                         printf("%lld",b);
  43.                                 }
  44.                                 else
  45.                                 {
  46.                                         printf("超出定义范围");
  47.                                         return 0;
  48.                                 }
  49.                         }
  50.                 }
  51.         else if(f==0&&b==0)
  52.         {
  53.                 printf("0");
  54.         }
  55.         else
  56.         {
  57.                 printf("未找到数值");
  58.         }
  59.         return 0;
  60. }
复制代码
最佳答案
2021-8-12 16:20:56
本帖最后由 jhq999 于 2021-8-12 17:54 编辑
wuyu123321 发表于 2021-8-12 17:28
好像不是。
因为b=10*b+(a-'0');这个语句的前提是a>='0'&&a


刚才说说错了,a=getchar();a=48

“else if(f==0&&b==0)
        {
                printf("0");
        }
        else
        {
                printf("未找到数值");
        }”
因为前面f=a,所以f等于48,不等于0,所以printf("未找到数值");
所以在a=getchar();后面应该加上a=a-48;
23333.png

最佳答案

查看完整内容

刚才说说错了,a=getchar();a=48 “else if(f==0&&b==0) { printf("0"); } else { printf("未找到数值"); }” 因为前面f=a,所以f等于48,不等于0,所以printf("未找到数值"); 所以在a=getchar();后面应该加上a=a-48;
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-8-12 16:20:56 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jhq999 于 2021-8-12 17:54 编辑
wuyu123321 发表于 2021-8-12 17:28
好像不是。
因为b=10*b+(a-'0');这个语句的前提是a>='0'&&a


刚才说说错了,a=getchar();a=48

“else if(f==0&&b==0)
        {
                printf("0");
        }
        else
        {
                printf("未找到数值");
        }”
因为前面f=a,所以f等于48,不等于0,所以printf("未找到数值");
所以在a=getchar();后面应该加上a=a-48;
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-8-12 16:25:48 | 显示全部楼层
你这程序想干嘛
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-8-12 16:33:24 | 显示全部楼层

用s1e13课后作业发挥了下,本来作用是提取数字的。后来又想多加点内容练练手,然后测试的时候发现0输出不了0。我百思不得其解,自己看不出问题,就来求助了。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-8-12 16:57:38 | 显示全部楼层
本帖最后由 jhq999 于 2021-8-12 16:59 编辑

输入0
a=getchar();
a的值是0,‘0’的值是48
b=10*b+(a-'0');
b的值就是-48
不知道你是不是这个原因
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-8-12 17:28:23 | 显示全部楼层
jhq999 发表于 2021-8-12 16:57
输入0
a=getchar();
a的值是0,‘0’的值是48

好像不是。
因为b=10*b+(a-'0');这个语句的前提是a>='0'&&a<='9'
a既然是0了也就不满足48~57了吧
你看我说的对不对
emmmm
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-8-12 18:21:59 | 显示全部楼层
jhq999 发表于 2021-8-12 17:49
刚才说说错了,a=getchar();a=48

“else if(f==0&&b==0)

我之前简直傻了,谢谢了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-25 04:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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