整数的分解(逆序输出与正序输出)
程序员文章站
2022-03-01 22:16:57
...
逆序输出
1.输入一个n位正整数,逆序输出其各个位上的数
输入示例1:6532
输出示例1:2 3 5 6
输入示例2:5000
输出示例2:0 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)
输入示例1:6532
输出示例1:2356
输入示例2:5000
输出示例2:5
#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位正整数,正序输出其各个位上的数
输入示例1:6532
输出示例1:6 5 3 2
输入示例2:5000
输出示例2:5 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;
}
上一篇: 关于整数输入的正序和倒序输出
推荐阅读
-
Java中冒泡排序的原生实现方法(正序与逆序)
-
浙大版《C语言程序设计(第3版)》题目集 习题6-6 使用函数输出一个整数的逆序数 (20分)
-
输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个属兑换。写三个函数:1.输入10个数;2.进行处理;3.输出10个数
-
实验6-7 使用函数输出一个整数的逆序数 (20分)
-
输出一个”任意“整数的逆序数 (15 分)
-
【C语言】使用函数输出一个整数的逆序数
-
使用函数输出一个整数的逆序数 (20分)
-
已知有n个互不相等的整数,求它们两两组合的所有结果。输出时每行一个组合,按列表下标的字典 序排序。列表下标小的数在前,列表下标大的数在后。 输入 第1行:整数的个数n 接下来n行:n个互不相同的整
-
输出正序反序所连接成的新字符串
-
统计一个整数数字位数,逆序、正序输出