Online Compiler C

#include <stdio.h> int main() { int A[10]; for (int i = 0; i < 10; i++) { scanf("%d", &A[i]); } int max_val = A[0]; int max_idx = 0; int min_val = A[0]; int min_idx = 0; for (int i = 1; i < 10; i++) { if (A[i] > max_val) { max_val = A[i]; max_idx = i; } if (A[i] < min_val) { min_val = A[i]; min_idx = i; } } printf("%d %d %d %d\n", max_idx + 1, max_val, min_idx + 1, min_val); return 0; }
这段代码的功能是:读入10个整数,找出其中最大值和最小值,并输出它们的位置(从1开始计数)和数值。

代码逻辑基本正确,但有一个潜在问题需要注意。

- 当数组中有多个相同的最大值或最小值时,你的代码会记录最后一个出现的位置,但题目可能要求记录第一个出现的位置。检查一下条件判断的逻辑,看看是否需要在值相等时也更新索引。
- 另外,考虑一下如果所有数字都相同的情况,你的代码是否能正确输出第一个位置?当前的条件只在严格大于或严格小于时更新,这符合记录第一个出现位置的要求吗?