Online Compiler 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 = arr[i]; } } return 0; }
这段代码的目的是找出数组中的最大值和第二大值。它先读入10个整数,然后遍历数组更新最大值和第二大值。

- 初始化时,你把max1和max2都设为arr[0]。但如果数组的第一个元素就是最大值,那么max2也会被设为最大值,这会导致第二大的值不正确。你需要考虑当arr[i]介于max1和max2之间的情况。
- 你的循环只处理了arr[i]大于max1的情况,但没有处理arr[i]大于max2但小于max1的情况。需要添加一个条件来更新max2。