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

#include <stdio.h> #define n 10 int main() { int arr[n]; int max1, max2; for (int i = 0; i < n; i++) { scanf("%d", &arr[i]); } max1 = arr[0]; max2 = arr[0]; for (int i = 1; i < n; i++) { if (arr[i] > max1) { max2=max1; max1 } } } return 0; }
这段代码的目的是找出数组中的最大值和第二大值,但存在语法错误和逻辑问题。

- 第13行 `max1` 后面缺少了赋值语句的分号和赋值操作,导致编译错误。你需要在这里完成对 `max1` 的更新。
- 初始时 `max1` 和 `max2` 都设为 `arr[0]` 可能有问题。如果所有元素都相等,或者最大值出现在第一个位置,那么 `max2` 可能无法正确更新。考虑如何区分最大值和第二大值的初始值。