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

#include <stdio.h> int main() { const int n = 10; int arr[n]; int min _a, max_a, min_b, max_b; for (int i = 0; i < n; i++) { scanf("%d", &arr[i]); } min_a = arr[0]; max_a = arr[0]; min_b = 0; max_b = 0; for (int i = 1; i < n; i++) { if (arr[i] < min_a) { min_a = arr[i]; min_b=i; } if (arr[i] > max_a) { max_a = arr[i]; max_b=i; } } printf("%d %d ", min_b,min_a); printf("%d %d ", max_b,max_a); }
这段代码的功能是:读取10个整数,找出其中的最小值和最大值,并输出它们的位置(下标)和数值。代码整体思路正确,但存在一个语法错误。

- 第6行中,变量声明 `int min _a` 中间有一个空格,导致 `min _a` 被解析为两个标识符 `min` 和 `_a`,这是非法的。需要将变量名写成一个整体,比如 `min_a`。
- 另外,代码中 `min_b` 和 `max_b` 记录的是下标,但初始值设为0是合理的,不过要注意如果数组第一个元素就是最小值或最大值,下标0会被正确记录。