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

#include <stdio.h> int main() { int a[10]; int min; for (int i = 0; i < 10; i++) { scanf("%d", &a[i]); } min = a[0]; for (int i = 0; i < 10; i++) { if (a[i] < min) { min = a[i]; } } printf("%d ",i); printf("%d ", min); max = a[0]; for (int i = 0; i < 10; i++) { if (a[i] > min) { max = a[i]; } } printf("%d ",i); printf("%d ", max); return 0; }
这段代码试图找出数组中的最小值和最大值,并打印它们及其索引。但代码中存在几个错误。

- 变量 `i` 在循环外部被使用,但它的作用域只在循环内部,所以 `printf("%d ",i);` 会编译错误。你需要记录最小值和最大值对应的索引位置。
- 变量 `max` 没有声明就直接使用,需要先定义它。
- 在找最大值的循环中,条件写成了 `a[i] > min`,这应该是 `a[i] > max`,否则无法正确找到最大值。

- 思考如何分别记录最小值和最大值出现的位置(索引),并在循环结束后打印对应的索引和值。