Online Compiler C

#include <stdio.h> int main() { int sum = 0; int number; for (int i = 0; i < 10; i++) { if (scanf("%d", &number) == 1) { if (number > 0) { sum += number; } } } printf("%d\n", sum); return 0; }
这段代码的功能是:读取10个整数,只累加其中正数的值,最后输出总和。

代码逻辑基本正确,但有一个潜在问题需要注意:

- 当输入不是整数时(比如输入字母),`scanf` 会返回0或EOF,此时 `number` 的值是未定义的,但代码只检查了返回值是否为1,没有处理输入失败的情况。如果输入失败,程序会继续循环,但 `number` 可能保留上一次的值,导致错误累加。

- 另外,如果输入流中残留了非数字字符,后续的 `scanf` 可能会持续失败,导致循环提前结束或行为异常。