实现打印一个整数的每一位

   日期:2020-11-05     浏览:106    评论:0    
核心提示:文章目录1、递归方式打印算法思路代码实现运行结果2、非递归方式打印算法思路程序的实现运行结果1、递归方式打印算法思路我们用求余的方式丢弃整数的最高位,用除法的操作打印需要输出的每一位个数。利用递归的原理进行打印。代码实现void func(int n){ if (n > 9){ func(n / 10); } printf("%d\n",n%10);}int main(){ int n = 1234; func(n); return 0;}运行结果1

文章目录

    • 1、递归方式打印
      • 算法思路
      • 代码实现
      • 运行结果
    • 2、非递归方式打印
      • 算法思路
      • 程序的实现
      • 运行结果

1、递归方式打印

算法思路

我们用求余的方式丢弃整数的最高位,用除法的操作打印需要输出的
每一位个数。利用递归的原理进行打印。

代码实现

void func(int n){ 
	if (n > 9){ 
		func(n / 10);
	}
	printf("%d\n",n%10);
}
int main()
{ 
	int n = 1234;
	func(n);
	
	return 0;
}

运行结果

1
2
3
4

2、非递归方式打印

算法思路

基本思想和递归的方式一样,不一样的是非递归方式不能像递归方式调用函数本身,这里我们需要引入两个变量对程序进行优化引入count 来计算整数的位数,bill来保存10的n次方,这样就可以根据循环依次得出结果

程序的实现

// 计算整数的位数
int func(int n){ 
	int count = 0;
	for (int i = 0; i <= n; i++){ 
		count++;
		n = n / 10;
	}
	return count;
}

int main()
{ 
	int n = 1234; 
	int bill = 1;
	int ret = func(n);
	for (int i = 0; i < ret; i++){ 
		bill *= 10;
	}
	while (n != 0){ 
		printf("%d\n", n / bill);
		n = n % bill;
		bill = bill / 10;
	}
	
	

	system("pause");
	return 0;
}

运行结果

1
2
3
4
请按任意键继续. . .


 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服