整数的分解(逆序输出与正序输出)

博主不定期更新【保研/推免、C/C++、5G移动通信、Linux、生活随笔】系列文章,喜欢的朋友【点赞+关注】支持一下吧!


逆序输出

1.输入一个n位正整数,逆序输出其各个位上的数

输入示例16532
输出示例12 3 5 6
输入示例25000
输出示例20 0 0 5
#include <stdio.h>

int main()
{
	int x;
	int result;
	scanf("%d", &x);
	
	while ( x>0 )
	{
		result = x%10;
		x = x/10;
		printf("%d ", result);	
	}
	return 0;
}

2.增加点难度:输入一个n位正整数,输出与其逆序的n位数(如果输入的数结尾有0,输出不要有前面的0)

输入示例16532
输出示例12356
输入示例25000
输出示例25
#include <stdio.h>

int main()
{
	int x;
	scanf("%d", &x);
	int result = 0;
	int power=1;
	int a[100]; //用来存放分离出的各个位数
	/*判断输入数的位数*/
	int t = x;
	int i = 1;
	while ( t>9 )
	{
		t /=10;
		power *= 10;
		i++;
//		printf("%d %d\n", i, power); //用于调试代码
	}
	/*逐一分离各位数,并组合成新的n位数*/
	int m = 0;
	for ( m=0; m<i; m++)
	{
		a[m] = x%10;
		x /= 10;
		printf("%d ", a[m]);  //此输出即为第一题要求的输出格式 
		result = result + a[m]*power;//也可以用pow函数来代替power的作用
		power /= 10;	
	}
	printf("\n");
	printf("%d\n", result);
	return 0;
}

注意:1和2的区别在于,对于输入的n位数:
  1中只需要逆序输出,即分离出n个数,再逐个输出即可;而2中需要将分离出的n个数组合成一个新的n位数,如果输入的n位数结尾含有0,输出时此0需要去掉。

正序输出

3.输入一个n位正整数,正序输出其各个位上的数

输入示例16532
输出示例16 5 3 2
输入示例25000
输出示例25 0 0 0
#include <stdio.h>

int main()
{
	int x;
	scanf("%d", &x);
	int divisor = 1;
	int t = x;
	//此处用t代替x进行下面第一轮循环,因为x在后面的循环中还有用,所以需要保留其原始值
	
	/*首先判断输入数的位数,以确定divisor大小*/	
	while (t>9)
	{
		t /= 10;
		divisor *= 10;
 		printf("%d\n", divisor);
	}
	
	/*此处条件变量要用divisor是考虑到末尾是0的数的特殊性,
	如7000,如果用x>0做判断,那么将输出7,而不是7 0 0 0*/
	while (divisor>0)  //如果不想输出末尾的0,此处条件改为x>0即可
	{
		int result = x / divisor;
		x = x % divisor;
		divisor /= 10;
		printf("%d", result);
	
		/*使输出结果每输出一个数空一格,且最后不含空格,根据要求的
		输出格式来确定是否需要以下代码*/
		if (divisor>0)
		{
			printf(" ");
		}
	}
	printf("\n");
	return 0;
}

  • 9
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月半 月半

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值