C语言编程,输出结果有误?

疑问1:输入6位数或带负号的数值,不会执行最后一个else if的条件,为什么会这样?(如图3)。疑问2:如果成功执行最后一个else if,如何写代码让用户重新输入数值?直接在该条件下加scanf会使其他条件也执行scanf,行不通(如图4)

    因为else if(num>99999 && num<0)的()中的num>99999 && num<0是永远不可能为“真”的表达式,所以无论输入什么数据都不会执行。根据疑问1的表述,这一句应该写成else if(num>99999 || num<0)可能才对。

    疑问2要对输入和这个if分支重新构架,改如下——

后者较好。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-01-06
最后一个应该是else if(num>99999||num<0),这里是或||,你写成了与&&,一个数是不可能同时大于99999并且小于0;
至于重新输入的问题,你可以把最后一个else if 的内容拿到最前面,先输入符合的数,再进入if
scanf("%ld",&num);

while(num<0||num>99999)
{
printf("不符合格式,请重新输入\n");
scanf("%ld",&num);
}本回答被提问者采纳
第2个回答  2020-01-06
int place=0
while(place==0)
{scanf("%ld",&num);
.....
...
把最后的else if改成else
else{place=0;}
}
相似回答