Online Compiler C

#include <stdio.h> int main() { int SIZE = 10; int A[SIZE]; int i; int max_idx, max_val, min_idx, min_val; for (i = 0; i < SIZE; i++) { scanf("%d", &A[i]); } max_val = A[0]; min_val = A[0]; max_idx = 0; min_idx = 0; for (i = 1; i < SIZE; i++) { if (A[i] > max_val) { max_val = A[i]; max_dix = i + 1; } if (A[i] < min_val) { min_val = A[i]; min_dix = i + 1; } } printf("%d%d%d%d", max_idx, max_val, min_idx, min_val); return 0; }
这段代码的目的是:读取10个整数,找出最大值和最小值及其位置(索引从1开始),然后输出这四个值。

代码中存在几个问题:

- 变量名写错了:代码中使用了 `max_dix` 和 `min_dix`,但前面声明的是 `max_idx` 和 `min_idx`。这会导致编译错误或未定义行为。

- 索引计算逻辑有误:`i + 1` 表示位置从1开始,但 `max_idx` 和 `min_idx` 的初始值是0,而循环中更新时却用了 `i + 1`,这会导致索引值不一致。需要统一索引的表示方式。

- 输出格式缺少分隔符:`printf` 中四个 `%d` 连在一起,输出会变成一串数字,难以区分。建议在格式字符串中加入空格或换行。