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

#include <stdio.h> enum { SIZE = 10 }; int main() { int A[SIZE]; for (int i = 0; i < SIZE; i++) { scanf("%d", &A); } for (int digit = 0; digit <= 9; digit++) { for (int i = 0; i < SIZE; i++) { if (A[i] % 10 == digit) { printf("%d ", A[i]); } } } return 0; }
这段代码试图读取10个整数,然后按每个数的个位数字(0到9)从小到大排序输出。但代码中存在一个关键错误。

- 在第一个循环中,`scanf("%d", &A);` 写错了。`A` 是数组名,这里应该使用 `&A[i]` 来读取每个元素。当前写法会导致只重复覆盖数组第一个元素的位置,其他元素未被正确赋值。

- 第二个循环的逻辑是正确的:外层循环遍历个位数字0到9,内层循环遍历数组,如果当前元素的个位等于外层数字就输出。但因为没有正确读取所有元素,输出结果会不符合预期。