Онлайн компилятор C

#include <stdio.h> void print_min_sum_indices(int n, int a[]){ int sum=a[0]+a[1]; for(int i=0;i<n;i++){ for(int j=i+1;j<n;j++){ if(sum<a[i]+a[j]){ sum=a[i]+a[j]; } } } printf("%d",sum); return; } int main() { int a[30]; for(int m=0;m<30;m++){ scanf("%d",&a[m]); } print_min_sum_indices(30,a); return 0; }
这段代码试图找出数组中两个元素的最小和,但实际上它找到的是最大和,并且没有记录对应的索引。

代码的主要问题:
- 变量名和注释暗示要找最小和,但条件 `if(sum < a[i]+a[j])` 实际上是在找最大和。
- 题目要求输出两个元素的索引,但代码只输出了和的值。

- 检查你的比较条件:`sum` 初始化为 `a[0]+a[1]`,然后当遇到更大的和时更新。如果要找最小和,应该反过来,当遇到更小的和时更新。
- 题目要求输出索引,而不是和的值。你需要记录下每次更新和时对应的 `i` 和 `j`,最后输出这两个索引。