感觉直接写a!=1就好了 试试
多用了一次scanf(); 在if语句中,无论输入正数还是负数,这个内容都是会被%d录入,这时scanf的返回值必然是 ==1,所以你的if语句就是if( 1!=1|| a< 0){.....;.}所以你的程序会出错。
一楼的回答是错误的,如果修改,那么需要 重新定义一个int b;b = scanf("%d",&a);if(b != 1 || a<= 0){'''''';}这是判断返回值最常见的做法。