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

#include <stdio.h> int main() { int SIZE = 10; int i; int max1, max2; int a[SIZE]; int cymma; 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]; } cymma = max1 + max2; printf("%d", cymma); } return 0; } }
这段代码的功能是:读入10个整数,然后找出其中最大的两个数,并在每次更新最大两个数时输出它们的和。

代码中存在几个问题:

- 变量 `cymma` 的拼写可能是笔误,但这不是关键问题。
- 在循环内部每次更新 `max1` 或 `max2` 后都输出一次和,这会导致输出多次结果,而不是只在最后输出一次。
- 循环结束后没有输出最终的最大两数之和,而是每次更新都输出。

提示:
- 想一想,你希望程序在什么时候输出结果?是每次找到更大的数都输出,还是只在所有数都检查完之后输出一次?
- 检查一下 `printf` 语句的位置,它应该放在循环外面还是里面?