欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-01 22:16:57
...

文章目录

逆序输出

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;
}