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

#include <stdio.h> int main() { int a[]; 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 个整数,计算其中所有正数的和并输出。但代码有几个关键错误。

- 数组 `int a[];` 没有指定大小,在C语言中必须指定数组大小,例如 `int a[100];`,或者使用动态内存分配。
- `scanf("%d\n", x);` 中 `x` 前面缺少取地址符 `&`,应该写成 `&x`。
- `scanf("%d", a[i]);` 中 `a[i]` 前面也缺少取地址符 `&`,应该写成 `&a[i]`。
- 另外,`scanf` 格式字符串中的 `\n` 通常不需要,可能会引起输入问题。