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

#include <stdio.h> void print_num(int num){ if(num<10){ printf("%d",num); return; }print_num(num/10); printf("%d",num); } int main() { int x; scanf("%d",&x); print_num(x); return 0; }
这段代码定义了一个递归函数 `print_num`,它试图将一个整数按位打印出来。但实际输出结果与预期不符。

- 递归调用 `print_num(num/10)` 之后,`printf("%d",num)` 打印的是当前完整的 `num`,而不是单独的一位数字。例如输入 123,会先递归打印 1,然后打印 12,再打印 123,最终输出 "112123"。
- 要打印每一位数字,应该在递归调用之后只打印当前数字的最后一位,即 `num % 10`,而不是整个 `num`。