为什么我的程序不能正常执行?无法判断非法的负数录入。是不是if判断条件写的不对?

图片说明

感觉直接写a!=1就好了 试试

多用了一次scanf(); 在if语句中,无论输入正数还是负数,这个内容都是会被%d录入,这时scanf的返回值必然是 ==1,所以你的if语句就是
if( 1!=1|| a< 0)
{
.....;.
}
所以你的程序会出错。

一楼的回答是错误的,如果修改,那么需要 重新定义一个
int b;
b = scanf("%d",&a);
if(b != 1 || a<= 0)
{
'''''';
}
这是判断返回值最常见的做法。