C语言基础—把不大于5位的整数各位上数字的正序和逆序输出

整数的输出

1.算法思想

打印就是把数字信息展示在屏幕上,输入一个数据,可以正序打印,也可以逆序打印,
如输入12345
正序打印可以为1, 2,3, 4,5,
逆序打印可以为5, 4,3, 2,1,
处理这种问题方法很多,这里只讲一下我的方法(话不多说,先看代码):

2.代码部分

#include <stdio.h>
#include <math.h>
int main()
{
	int num,place,x;
	scanf_s("%d", &num);
	place = log10((double)num) + 1;  //计算你输入的是几位数
	x = num;
	printf("%d为%d位数\n", num, place);
	printf("顺序输出为:");
	for (int j = pow(10, place-1); j > 0; j = j / 10) {
		printf("%d,", num / j);
		num %= j;
	}
	printf("逆序输出为:");
	for (int i = 0; i < place; i++) {
		printf("%d,", x % 10);
		x /= 10;
	}	
	return 0;
}

3.运行结果

在这里插入图片描述
在这里插入图片描述

4.算法解析

(1) 首先需要讲解的是place的作用, 对于任意不多余 5 位的一个正整数num,有10(x-1)≤num<10x,那么num的位数为x,则
x-1≤log10(num)<x
即 x=(int)log10(num)+1,
所以程序中直接用place = log10((double)num) + 1;一行结束;
(2) 其次要讲为什么用了一个x = num;在程序进行中,顺序输出后num的值已经改变,第二轮逆序输出的时候用x代替了num实现效果;
(3) 最后要讲两个循环的作用,其核心分别是 num/ j;和x %10;很容易想到,逆序输出需要取余数,正序输出需要留下位数最高的那一位,这样就可以理解核心内容了;

5. 注意事项

(1) 位数不能超过五位数,因为数学公式对五位一下的数成立
(2) printf("%d,", x % 10);输出的时候在后边直接放上了x%10是避免改变x的值。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值