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

#include <stdio.h> void print_min_sum_indices(int n, int a[]) { int record1 = 0, record2 = 1; int min1 = a[0], min2 = a[1]; if (a[0] > a[1]) { min1 = a[1]; min2 = a[0]; record1 = 1; record2 = 0; } for (int i = 2; i < n; i++) { if (a[i] < min1) { min2 = min1; min1 = a[i]; record2 = record1; record1 = i; } else if (a[i] < min2) { min2 = a[i]; record2 = i; } } printf("%d %d", record1, record2); } int main() { return 0; }
这段代码定义了一个函数 `print_min_sum_indices`,它的目的是在整数数组中找到两个最小的元素,并输出它们在数组中的下标。函数先初始化前两个元素为候选最小值,然后遍历剩余元素更新最小值和次小值及其下标。但主函数 `main` 直接返回 0,没有调用这个函数,所以程序实际运行后没有任何输出。

- 你的代码逻辑基本正确,但有一个边界情况需要注意:如果数组长度 `n` 小于 2,函数会访问 `a[1]` 导致越界。考虑在函数开头检查 `n` 是否足够大。
- 另外,主函数中没有调用 `print_min_sum_indices`,也没有提供测试数据。你需要补充一个数组和 `n` 的值,并调用该函数才能看到输出结果。