题目
程序每次读入一个正3位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。
题目链接:题目详情 - 7-3 逆序的三位数 (10 分) (pintia.cn)https://pintia.cn/problem-sets/14/problems/783
输入格式
每个测试是一个3位的正整数。
输出格式
输出按位逆序的数。
样例
输入样例
123
输出样例
321
解题思路
1.0版本
因为我们输入的数是连在一起的,所以无法单独获取,只能用别的办法。
于是我们可以除以一个数提取每位数的值。
百位: b=a/100;
十位: c=a/10; c=c%10;
个位: d=a%10;
三位数逆序后,其实就是百位变成了个位,十位不变,个位变成了百位,就可以输出了:
printf("%d%d%d",d,c,b);
此外,我们还需解决一个问题:
注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。
要解决这个问题也很简单,只需判断一下即可:
if (d==0){
if (c==0){
printf("%d",b);
}
else
printf("%d%d",c,b);
}
else
printf("%d%d%d",d,c,b);
2.0版本
设输入的三位数为a,则其各个位的数字可以这样得到:
百位 | 十位 | 个位 |
a/100 | a/10%10 或 a%100/10 | a%10 |
三位数逆序后,其实就是百位变成了个位,十位不变,个位变成了百位,即为:
a%10*100+a%100/10*10+a/100
然后打印出来就可以了。
源代码
1.0版本
#include<stdio.h>
int main()
{
int a,b,c,d;
scanf("%d",&a);
b=a/100;
c=a/10;
c=c%10;
d=a%10;
if (d==0){
if (c==0){
printf("%d",b);
}
else
printf("%d%d",c,b);
}
else
printf("%d%d%d",d,c,b);
return 0;
}
2.0版本
#include<stdio.h>
int main()
{
int a;
scanf("%d",&a);
a=a%10*100+a%100/10*10+a/100;
printf("%d",a);
return 0;
}
!!!您的点赞和支持,是我更新的最大动力!!!