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

#include <stdio.h> int main() { int num,max; scanf("%d",&max); while(scanf("%d",&num)!=0){ if(num>max) max = num; } printf("%d",max); return 0; }
这段代码试图从输入中找出最大的整数。它先读取第一个数作为初始最大值,然后循环读取后续数字并更新最大值。

代码存在一个关键问题:循环条件 `scanf("%d",&num)!=0` 的写法不正确。`scanf` 返回成功读取的项数,当输入结束时返回 `EOF`(通常是 -1),而不是 0。因此循环可能不会按预期结束。

- 检查 `scanf` 的返回值:当输入结束时,它返回的是 `EOF`,而不是 0。你需要用 `!= EOF` 来判断是否还有输入。
- 考虑输入可能包含非数字字符的情况:如果输入不是整数,`scanf` 会返回 0 并陷入死循环。可以思考如何正确处理这种情况。