Онлайн компилятор 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 = 0, i_min = 0; for (int i = 0; i < SIZE; i++) { if (max <= A[i]) { max = A[i]; i_max = i+1; } } printf("%d %d ", i_max, max); for (int i = 0; i < SIZE; i++) { if (min >= A[i]) { min = A[i]; i_min=i; } } printf("%d %d ", i_min, min); return 0; }
这段代码的功能是:读取10个整数存入数组,然后分别找出最大值及其位置(从1开始计数)和最小值及其位置(从0开始计数),最后输出这两组信息。

代码中存在一些逻辑问题:

- 在找最大值时,`i_max` 被赋值为 `i+1`,但找最小值时 `i_min` 被赋值为 `i`,两者位置编号方式不一致。你需要决定统一使用从0还是从1开始的位置编号。

- 条件判断使用了 `<=` 和 `>=`,这意味着当有多个相同的最值时,会记录最后一个出现的位置。你需要确认这是否符合题目要求,或者应该记录第一个出现的位置(使用 `<` 和 `>`)。