在线编译器 C

#include <stdio.h> int main() { int n = 10; int a[10]; int max1, max2; for (int i = 0; i < n; i++) { scanf("%d", &a[i]); } if (a[0] > a[1]) { max1 = a[0]; max2 = a[1]; } else { max1 = a[1]; max2 = a[0]; } for (int i = 2; i < n; i++) { if (a[i] > max1) { max2 = max1; max1 = a[i]; } else if (a[i] > max2) { max2 = a[i]; } } int sum = max1 + max2; printf("%d", sum); return 0; }
这段代码的功能是:读取10个整数,找出其中最大的两个数,并输出它们的和。

代码的思路是先比较前两个数,初始化max1和max2为第一大和第二大的数,然后遍历剩余的数,依次更新这两个最大值。

- 注意代码中数组大小固定为10,但变量n也是10,这里没有使用n来定义数组大小,如果将来要修改n,数组大小不会自动变化。
- 代码假设输入至少有两个数,但没有处理n小于2的情况,如果n很小,访问a[1]可能越界。