在线编译器 C

#include <stdio.h> void num(int n){ if(n<10){ printf("%d ",n); return; } return num(n/10); printf("%d ",n%10); } int main() { int x; scanf("%d",&x); num(x); return 0; }
这段代码试图将一个整数的各位数字从高位到低位依次输出,但存在逻辑错误。

- 在 `num` 函数中,当 `n >= 10` 时,执行 `return num(n/10)` 后,函数会立即返回,导致后面的 `printf("%d ",n%10)` 永远不会执行,因此只能输出最高位数字,而无法输出其他位。
- 递归调用的位置和 `printf` 的顺序需要调整,才能实现先递归处理高位,再输出当前最低位的效果。