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

#include <stdio.h> int main() { int a[10]; int temp; for (int i = 0; i < 10; i++) { scanf("%d", &a[i]); } for (int i = 0; i<5; i++) { for (int j = 1 + i; j < 5; j++) { if (a[j]=a[i]{ int temp = a[j]; a[j] = a[i]; a[i] = temp; } } } for (int i = 5,;i < 10; i++) { for (int j = i + 1; j < 10; i++) { if (a[j] > a[i]) { int temp = a[j]; a[j] = a[i]; a[i] = temp; } } } for (int i = 0; i < 10; i++) { printf("%d ", a[i]); } return 0; }
这段代码的目的是读取10个整数,然后对数组的前半部分(索引0-4)和后半部分(索引5-9)分别进行排序,但排序逻辑有错误。

- 第一个排序循环中,条件判断写成了 `if (a[j]=a[i]`,这是赋值操作而不是比较,而且缺少右括号。这会导致逻辑错误和编译错误。
- 第二个排序循环中,内层循环的增量写成了 `i++` 而不是 `j++`,这会导致无限循环或错误行为。
- 变量 `temp` 在函数开头声明了,但在循环内部又重复声明了 `int temp`,这虽然不会报错,但会造成混淆。