在线编译器 C

#include <stdio.h> int main() { int a[10]; for (int i = 0; i < 10; i++) { scanf("%d", &a[i]); } for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { if (a[j] % 10 == i) printf("%d ",a[i]) ; } } return 0; }
这段代码试图将输入的10个整数按照个位数(0-9)进行排序输出,但实现有误。

- 外层循环变量 `i` 代表个位数0到9,内层循环遍历数组,但输出时使用了 `a[i]` 而不是 `a[j]`,这会导致输出错误的值。
- 另外,当多个数的个位数相同时,内层循环会重复输出同一个 `a[i]`,而不是输出所有符合条件的数。

提示:
- 检查输出语句中使用的数组索引,思考应该输出当前遍历到的元素还是外层循环对应的元素。
- 考虑内层循环中 `a[j] % 10 == i` 这个条件,当条件成立时,应该输出哪个元素?