Online Compiler C

#include <stdio.h> int main() { int n = 10,c,d; 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, c, min); return 0; }
这段代码的功能是:输入10个整数,找出其中的最小值和最大值,并记录它们第一次出现的位置(下标),最后输出最大值及其下标、最小值及其下标。

代码中有一个潜在问题:变量 `c` 和 `d` 没有初始化。如果最小值或最大值恰好是数组的第一个元素,那么对应的下标变量就不会被赋值,导致输出未定义的值。

- 检查变量 `c` 和 `d` 的初始化。当 `min` 和 `max` 初始化为 `a[0]` 时,对应的下标也应该初始化为0,否则循环中如果没有更新(比如所有元素都相等),下标变量会保持未初始化的值。
- 注意输出顺序:代码先输出 `d`(最大值下标),然后 `max`,然后 `c`(最小值下标),最后 `min`。确认这是你想要的顺序。