Online Compiler 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[i] % 10 == j) printf("%d ",a[i]) ; } } return 0; }
这段代码的作用是:先读入10个整数存入数组,然后对每个数,检查它的个位数(a[i] % 10)是否等于0到9中的某个值,如果等于就打印这个数。但实际运行效果是每个数都会被打印多次,而且顺序混乱,并不是按个位数分组输出。

- 你的内层循环 `for (int j = 0; j < 10; j++)` 会导致每个数被重复判断10次,只要个位数等于某个j就会打印一次。实际上你只需要根据个位数直接决定是否打印,不需要对j做循环。
- 如果你想按个位数分组输出(比如先输出个位为0的数,再输出个位为1的数……),那么外层循环应该遍历个位数0到9,内层循环遍历数组,判断每个数的个位数是否等于当前外层循环的个位数。