Online Compiler C

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

- 变量 `i_max` 和 `i_min` 在使用前没有初始化,也没有在循环中更新它们的值,所以输出的是未定义的值。
- 代码中先输出 `i_max` 再输出 `max`,但 `i_max` 从未被赋值,导致输出结果错误。
- 寻找最大值和最小值的循环是分开的,但索引变量没有在找到更大或更小值时被记录。

- 提示1:在找到新的最大值或最小值时,除了更新 `max` 或 `min`,还需要同时更新对应的索引变量 `i_max` 或 `i_min`。
- 提示2:确保在循环开始前给 `i_max` 和 `i_min` 赋初始值,比如都设为0,这样当第一个元素就是最大或最小时,索引也能正确输出。