鱼C论坛

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

[已解决]s1e13内容

[复制链接]
发表于 2021-8-12 16:20:55 | 显示全部楼层 |阅读模式
10鱼币
萌新想问一下为什么输入0不会得到输出的0,困扰我一下午了
求帮助(代码挺啰嗦的,不够简洁,很抱歉)
#include<stdio.h>
#include<math.h>
int main()
{
    int a;
    long long b=0;
    long long e=0;
    char f;
    const int c=pow(2,sizeof(int)*8)/2-1;
    const int d=pow(2,sizeof(int)*8)/2*(-1);
        while((a=getchar())!='\n')
        {
                f=a;
                if(a>='0'&&a<='9')
                {
                        b=10*b+(a-'0');
                }
        }
                {
                        if(b>=d&&b<=c)
                        {
                                if(b!=0)
                                printf("%lld",b);
                        }
                        else
                        {
                                printf("超出定义范围");
                                return 0;
                        }
                }
                if(b!=0)
                {
                                while(1)
                        {
                                printf("\n");
                                while((a=getchar())!='\n')
                                {
                                        e=10*e+(a-'0');
                                }
                                if(e>=d&&e<=c)
                                {
                                        printf("%lld",b);
                                }
                                else
                                {
                                        printf("超出定义范围");
                                        return 0;
                                }
                        }
                }
        else if(f==0&&b==0)
        {
                printf("0");
        }
        else
        {
                printf("未找到数值");
        }
        return 0;
}
最佳答案
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;
想知道小甲鱼最近在做啥?请访问 -> 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;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-12 16:25:48 | 显示全部楼层
你这程序想干嘛
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

用s1e13课后作业发挥了下,本来作用是提取数字的。后来又想多加点内容练练手,然后测试的时候发现0输出不了0。我百思不得其解,自己看不出问题,就来求助了。
想知道小甲鱼最近在做啥?请访问 -> 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
不知道你是不是这个原因
想知道小甲鱼最近在做啥?请访问 -> 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

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

我之前简直傻了,谢谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-6 17:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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