s1e13内容
萌新想问一下为什么输入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;
} 本帖最后由 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;
你这程序想干嘛 万千只cnm 发表于 2021-8-12 16:25
你这程序想干嘛
用s1e13课后作业发挥了下,本来作用是提取数字的。后来又想多加点内容练练手,然后测试的时候发现0输出不了0。我百思不得其解,自己看不出问题,就来求助了。 本帖最后由 jhq999 于 2021-8-12 16:59 编辑
输入0
a=getchar();
a的值是0,‘0’的值是48
b=10*b+(a-'0');
b的值就是-48
不知道你是不是这个原因 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
jhq999 发表于 2021-8-12 17:49
刚才说说错了,a=getchar();a=48
“else if(f==0&&b==0)
我之前简直傻了,谢谢了
页:
[1]