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

#include <stdio.h> int main() { int a[10]; int max1; int max2; int sum; for (int i = 0; i < 10; i++) { scanf("%d", &a[i]); } max1 = a[0],max2=a[1] for (int i = 0; i < 10; i++) { if (a[i] > max1) { max2 = max1; max1 = a[i]; } else if (max1 >= a[i] && max2 < a[i]) max2 = a[i]; } sum = max1 + max2; printf("%d", sum); return 0; }
这段代码的目的是从10个整数中找出最大的两个数,并计算它们的和。代码逻辑基本正确,但有几处需要注意。

- 第9行缺少分号,这是语法错误,会导致编译失败。C语言中每条语句必须以分号结束。
- 初始化max1和max2时直接用了a[0]和a[1],但并没有保证a[0]一定大于a[1]。如果a[0]小于a[1],那么初始的max1和max2顺序就反了,可能导致后续比较出错。可以考虑先对前两个数进行排序,或者调整初始化方式。