Онлайн компилятор C

#include <stdio.h> int main() { int num,max=0; scanf("%d",&num); max = num; while(num!=0){ if(num<max){ max=num; } if(num == 0){ printf("%d",max); } } return 0; }
这段代码试图从输入的一系列整数中找出最小值,但存在逻辑错误。程序会先读取一个数,然后进入循环,但循环内没有更新`num`的值,导致无限循环。

- 循环条件`num!=0`中,`num`的值从未在循环内改变,所以一旦进入循环就会永远执行下去。
- 判断条件`if(num<max)`写反了,应该是`if(num>max)`才能更新最大值,但你的意图是找最小值,所以应该用`if(num<max)`来更新最小值,但初始值`max=0`会导致问题(如果输入全为正数,最小值永远不会小于0)。
- 循环内对`num==0`的判断永远不会为真,因为`num`没有变化,而且即使为真,输出位置也不对,应该在循环结束后输出结果。