在线编译器 C

#include <stdio.h> int main() { int a[10]; int i, j, temp; for (int n = 0; n < 10; n++) { scanf("%d", &a[i]); } for (i = 0; i < 10; i++) { for (j = 0; j < 10; j++) { int b = a[j] % 10; int c = a[j + 1] % 10; if (c > b) { temp = c; c = b; b = temp; } } } for (int n = 0; n < 10; n++) { printf("%d ", a[i]); } return 0; }
这段代码试图对数组进行排序,但存在几个关键问题。它读取10个整数,然后尝试按个位数从大到小排序,最后输出结果。

- 在第一个循环中,你使用了 `scanf("%d", &a[i])`,但变量 `i` 没有被初始化,这会导致未定义行为。你应该使用循环变量 `n` 来访问数组元素,比如 `a[n]`。
- 在排序部分,你交换了变量 `b` 和 `c` 的值,但这并没有改变数组 `a` 中的元素顺序。你需要直接交换数组元素 `a[j]` 和 `a[j+1]`,而不是临时变量。