Online Compiler C

#include <stdio.h> int main() { int a[100]; int x; int sum = 0; scanf("%d\n", &x); for (int i = 0; i < x; i++) { scanf("%d", &a[i]); } for (int i = 0; i < x; i++) { if (a[i] > 0) { sum += a[i]; } } printf("%d", sum); return 0; }
这段代码的功能是:先读入一个整数 x,然后读入 x 个整数存入数组,最后计算并输出其中所有正数的和。

- 第一行 `scanf("%d\n", &x);` 中的 `\n` 可能会导致输入行为不符合预期。`scanf` 的格式字符串中的空白字符(包括换行)会匹配任意数量的空白,但通常不需要显式写 `\n`,建议去掉它,否则可能要求额外输入一个非空白字符才能结束。
- 代码没有处理 x 可能大于 100 的情况,如果输入 x 超过 100,数组会越界。可以考虑增加对 x 的范围检查,或者使用动态分配。