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

#include <stdio.h> int main() { int n; int max; if (scanf("%d", &n) == 1) { max = n; } while (scanf("%d", &n) == 1) { if (n == 0) { break; } if (n > max) { max = n; } } printf("%d", n); return 0; }
这段代码试图从输入中读取一系列整数,找到其中的最大值,并在遇到0时停止。但最后输出的不是最大值,而是最后一个读取的值。

- 在 `printf("%d", n);` 这一行,你输出的是变量 `n`,但此时 `n` 保存的是循环中最后读取的值(可能是0或最后一个非零数),而不是你计算出的 `max`。应该输出 `max` 才对。

- 另外,第一个 `if` 语句只处理了第一个数,但如果第一个数就是0,程序会直接进入循环并立即退出,此时 `max` 没有被正确初始化。考虑一下当输入的第一个数就是0时,程序应该输出什么?