Online Compiler C

#include <stdio.h> int main() { int a[10]; for (int j = 0; j < 10; j++) { scanf("%d", &a[j]); } for (int i = 0; i < 10; i++) { for (int j = i + 1; j < 10; j++) { int mini = i; if (a[i]%10 < a[mini]%10) { mini = i; } } // change } return 0; }
这段代码试图对数组按个位数进行排序,但目前逻辑不完整且有错误。它读取10个整数,然后使用选择排序的思路,但内层循环没有正确找到最小元素的位置,也没有进行交换。

- 内层循环中,每次比较的是 `a[i]%10` 和 `a[mini]%10`,但 `mini` 始终等于 `i`,所以条件永远不会成立。你需要在内层循环中更新 `mini` 为当前找到的最小个位数元素的下标,而不是固定为 `i`。
- 内层循环结束后,需要交换 `a[i]` 和 `a[mini]` 的值,才能把当前最小的个位数元素放到前面。目前交换部分缺失了。