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

#include <stdio.h> int main() { int a, t; scanf("%d", &a); int t = a; int div = 1; while (t / 10 > 0) { div *= 10; t /= 10; } for (; div > 0; div /= 10) { int digit = a / div; printf("%d ", digit); a = a % div; } return 0; }
这段代码的目的是将一个整数的每一位数字从左到右依次打印出来,每个数字之间用空格分隔。

代码中存在一个错误:变量 `t` 被声明了两次。第一次是 `int a, t;`,第二次是 `int t = a;`,这会导致编译错误。

- 第一次声明 `int a, t;` 已经定义了 `t`,后面不能再重复定义 `int t = a;`。应该直接使用 `t = a;` 来赋值。
- 另外,`while (t / 10 > 0)` 这个条件可以更简洁地写成 `while (t >= 10)`,但当前写法也能工作。