打印一个无符号整数的每一位

这个是一个典型的递归题目,浅浅分析一下。

要想打印出一个无符号整数的每一位,得先定义一个变量,然后还要有输入,输出,我先把整个代码展示一下

void print(int n)
{
	if (n > 9)
	{
		print(n / 10);
	}
	printf("%d ", n % 10);
}
int main()
{
	unsigned int num = 0;
	scanf("%d", &num);
	print(num);
	return 0;
}

运行的时候肯定是先从主函数开始了,先进去之后,输入一个整数,比如说123的话,也就是说num=123;然后下一步进到print()函数中,这个时候代码跑到我们自己定义的print()函数中去,然后因为n=123大于9的,所以进到if语句中123除以10,n就变成了12,递归嘛,自己调用自己呗,n=12还是大于9的,继续进到if语句中除以10,然后n=1,此时,n=1<9,所以不执行if语句了,开始执行printf语句,打印n%10,也就是求余数,1%10=1,先打印了1,然后此时print函数已经调用完了,要开始执行printf函数,回到上一个print函数中也就是n=12的时候再去执行printf函数,12%10=2,打印完2之后,再回到第一个print函数,执行printf函数,123%10=3,打印出3。 

这个样就打印出了每一位整数。如果文字有点麻烦的话,可以看图,是从b站上鹏哥视频中截图自己做的笔记。

话不多说,上图。

先执行黑线,也就是print函数,再执行红线,printf函数。

也就是说print函数完全调用完以后,才回返回去执行printf函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值