疑问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分支重新构架,改如下——
或
后者较好。