Online Compiler C

#include <stdio.h> int main() { int n, a[20], i = 0, j; scanf("%d", &n); while (n > 0) { a[i++] = n % 10; n = n / 10; } for (j = i - 1; j >= 0; j--) { printf("%d", a[i]); } return 0; }
这段代码的目的是将输入的数字按位拆分并反向输出。它把数字的每一位存入数组,然后从数组末尾向前打印,但输出结果有问题。

- 在打印循环中,你使用了 `a[i]`,但此时 `i` 已经等于数组有效长度,指向最后一个元素之后的位置。应该使用循环变量 `j` 来访问数组元素,因为 `j` 正在从 `i-1` 递减到 `0`。
- 另外,注意数组 `a` 的大小固定为20,如果输入的数字位数超过20,会导致数组越界,但这不是当前的主要问题。