答案:
#include<stdio.h>
void print(int n) //定义一个打印一个数的每一位的函数
{
if (n / 10 > 0) //如果是两位数及以上
{
print(n / 10); //继续/10
printf("%d ", n%10); //打印这个数的最后一位
}
else //如果是个位数
{
printf("%d ", n % 10); //打印这个数
}
}
int main()
{
int n = 0;
scanf("%d", &n);
print(n);
return 0;
}
再发现printf("%d ",n%10);这一行代码无论是在if里还是在else里都会运行一次,所以可以再更简洁一下,优化代码如下
#include<stdio.h>
void print(int n)
{
if (n / 10 > 0)
{
print(n / 10);
}
printf("%d ", n % 10);
}
int main()
{
int n = 0;
scanf("%d", &n);
print(n);
return 0;
}
至于为什么会按照从前往后的顺序打印,而不是从后往前的逆序打印,具体逻辑可以见下图,也是递归的思想逻辑