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

#include <stdio.h> int main() { int num,max=0; scanf("%d",&num); max = num; while(num!=0){ scanf("%d",&num); if(num<max){ max=num; } if(num == 0){ printf("%d",max); } } return 0; }
这段代码试图从输入中找出最小值,但逻辑上有问题。它读取一系列整数,当输入0时停止,然后输出找到的最小值。

- 你初始化 `max` 为0,但实际要找的是最小值,变量名和用途不匹配。应该用更合适的变量名,比如 `min`。
- 条件 `if(num<max)` 判断的是“如果当前数小于最大值”,这正好反了。要找最小值,应该判断当前数是否比当前记录的最小值更小。
- 当输入0时,你立即输出结果,但此时0本身也被当作一个数参与了比较。应该先判断是否结束,再决定是否更新最小值。