在线编译器 C

#include <stdio.h> int main(void) { int arr(10); for (int = 0; i < 10; i++) { scanf("%d", &arr[i]); } int max1 = arr[0]; int max2 = 1; int min1 = arr[0]; int min2 = 1; for (int i = 1; i < 10; i++) { if (arr[i] > max1) { max1 = arr[i]; max2 = i + 1; } if (arr[i] < min1) { min1 = arr[i]; min2 = i + 1; } } printf("%d %d %d %d\n", max1, max2, min1, min2); return 0; }
这段代码试图找出一个包含10个整数的数组中的最大值和最小值,以及它们的位置(从1开始计数)。但代码中存在几个语法错误。

- 数组声明使用了圆括号`int arr(10)`,这是错误的。在C语言中,数组声明应该使用方括号`int arr[10]`。
- 在for循环中,`int = 0`缺少变量名,应该写成`int i = 0`。

另外,逻辑上`max2`和`min2`的初始值设为1是合理的,但要注意如果数组第一个元素就是最大值或最小值,这个初始值是正确的。不过,如果数组中有重复的最大值或最小值,代码只会记录第一次出现的位置。