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

#include <stdio.h> int main() { int a[10]; int b[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[i] % 10 == j) printf("%d",a[i]) ; } } return 0; }
这段代码首先读取10个整数存入数组a,然后尝试根据每个数的个位数进行某种输出。但目前的逻辑存在问题:内层循环遍历j从0到9,当a[i]的个位数等于j时打印该数,这会导致每个数被重复打印多次(因为j会遍历所有可能值,但条件只对其中一个j成立,实际上每个数只打印一次)。不过更关键的是,代码没有实现任何排序或分组功能,只是按原顺序输出。

- 你的代码目前只是根据个位数条件输出数字,但并没有真正按个位数分组或排序。思考一下:如果希望按个位数从小到大输出所有数字,应该先根据个位数对数组进行排序,而不是用嵌套循环逐个判断。
- 注意内层循环中j从0到9,但条件a[i] % 10 == j只对其中一个j成立,所以每个数只会被打印一次,且顺序仍然是原始顺序。这并没有达到按个位数分组输出的效果。