博主不定期更新【保研/推免、C/C++、5G移动通信、Linux、生活随笔】系列文章,喜欢的朋友【点赞+关注】支持一下吧!
逆序输出
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;
}