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

#include <stdio.h> int main() { int n = 10; int a[10]; int min, max; for (int i = 0; i < n; i++) { scanf("%d", &a[i]); } min = a[0]; for (int i = 0; i < n; i++) { if (a[i] < min) { min = a[i]; c = i; } } max = a[0]; for (int p = 0; p < n; p++) { if (a[p] > max) { max = a[p]; d = p; } } printf("%d %d %d %d", d, max, i, min); return 0; }
这段代码试图找出数组中的最小值和最大值及其位置,但存在几个问题。

- 变量 `c` 和 `d` 没有声明就直接使用,这会导致编译错误。同时,在最后输出时使用了未定义的变量 `i`,它来自第一个循环结束后的值,但这不是你想要的位置。
- 你记录了最小值的位置到 `c`,最大值的位置到 `d`,但输出时却用了 `d`、`max`、`i`、`min`,其中 `i` 是循环变量,不是最小值的位置。

- 确保所有使用的变量都已声明,比如 `c` 和 `d` 需要声明为 `int` 类型。
- 在输出时,应该使用你实际记录位置的变量(比如 `c` 和 `d`),而不是循环变量 `i`。