在线编译器 C

#include <stdio.h> int main() { int arr[10]; for (int i = 0; i < 10; i++) { scanf("%d", &arr[i]); } int max1, max2; if (arr[0 > arr[1) { max1 = arr[0]; max2 = arr[1]; } else { max1 = arr[1]; max2 = arr[0]; } for (int i = 2; i < 10; i++) { if (arr[i] > max1) { max1 = arr[i]; max2 = max1; } else if (max2 < arr[i]) { max2 = arr[i]; } } } printf("%d", max1 + max2); return 0; }
这段代码试图找出数组中最大的两个数并求和,但存在语法错误和逻辑问题。

- 第8行 `if (arr[0 > arr[1)` 中括号位置错误,应该是 `arr[0] > arr[1]`,缺少了右方括号和右括号。同时注意条件表达式的写法。
- 第16行 `max2 = max1;` 会导致两个最大值相同,丢失了原来的最大值。当找到新的最大值时,应该把旧的最大值赋给第二大的数,而不是把新最大值同时赋给两个变量。
- 第22行的 `printf` 和 `return` 不在 `main` 函数的花括号内,需要检查花括号的配对。