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

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

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

- 当数组中有重复的最大值时,你的代码会如何处理?例如,如果输入是10, 10, 9, 8, ...,那么max1和max2都会是10,它们的和是20。但如果你希望找出两个不同的最大值(即不重复使用同一个元素),那么当前代码在遇到第二个10时,会把它当作新的max1,而原来的max1变成max2,结果仍然是两个10相加。这取决于你的需求是否允许重复使用同一个数值。

- 另外,变量名`symma`拼写不太规范,通常写作`sum`,但这不影响功能。