```c
include
int main() {
int num, t, mask;
scanf("%d", &num);
t = num;
while (t > 9) {
t /= 10;
mask *= 10;
}
while (mask > 0) {
printf("%d ", num / mask);
num %= mask;
mask /= 10;
}
return 0;
}
```
这个程序首先读取一个整数,然后通过循环和位操作将其各位数字逐位输出。具体步骤如下:
1. 读取输入的整数并存储在变量`num`中。
2. 使用变量`t`来存储`num`的副本,并在循环中不断除以10,直到`t`小于10。
3. 使用变量`mask`来存储10的幂次,每次循环中乘以10。
4. 在循环中,输出`num`除以`mask`的商,然后更新`num`和`mask`的值,直到`mask`变为0。
这个程序可以正确地输出一个整数的各位数字,并且每个数字后面有一个空格。