在线编译器 C

#include <stdio.h> int main() { int a, b; scanf("%d", &a); b = a; while (scanf("%d", &a), a != 0) { if (a > b) b = a; } printf("%d", b); return 0; }
这段代码的功能是从输入中读取一系列整数,直到遇到0为止,然后输出这些整数中的最大值。它使用变量b来保存当前遇到的最大值,初始时b等于第一个输入的数。

- 代码假设输入的第一个数一定不是0,否则b会被设为0,而如果后续没有其他数,输出0可能不符合预期。考虑一下如果第一个数就是0的情况,程序会输出什么。
- 变量b的初始值直接用了第一个输入的数,但如果输入序列中所有数都是负数,这个逻辑是没问题的。不过想一想,如果输入的第一个数不是0,但后续所有数都比它小,b的值是否正确?