1.题目
程序每次读入一个正3位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。
输入格式:
每个测试是一个3位的正整数。
输出格式:
输出按位逆序的数。
输入样例:
123
输出样例:
321
2.分析
考虑使用数组、递归等方法解决
3.代码
方法1:递归
#include <stdio.h>
void ReverseSort(int n) //递归
{
if (n)
{
printf("%d", n % 10);
ReverseSort(n /= 10);
}
}
int main()
{
int Num;
scanf("%d", &Num);
if (Num % 100 == 0) //当后两位均为0时
printf("%d", Num / 100);
else if(Num%10==0) //只有最后一位为0时
ReverseSort(Num/10);
else
ReverseSort(Num); //其余
return 0;
}
方法2:数组(也可以用三个变量代替)
#include <stdio.h>
int main()
{
int Num,a[3],i;
scanf("%d", &Num);
a[0] = Num / 100;
a[1] = Num % 100 / 10;
a[2] = Num % 10;
if (a[2] == 0 && a[1] == 0) //注意 不可写成 a[2]==a[1]==0
printf("%d", a[0]);
else if (a[2] == 0)
{
for (i = 1; i >= 0; i--)
printf("%d", a[i]);
}
else
{
for (i = 2; i >= 0; i--)
printf("%d", a[i]);
}
return 0;
}
方法3:分离出每一位,再重新将 每一位 乘以 对应的倍数 再相加
#include <stdio.h>
int main()
{
int Num,i,digit=0,ret=0;
scanf("%d",&Num);
while(Num>0)
{
digit=Num%10; //依次得出每一位
ret=ret*10+digit; //乘以对应的倍数
Num/=10; //更新Num
}
printf("%d",ret);
return 0;
}
4.更新日志
2022.3.4 整理上传(C)
2022.3.6 上传方法2、3(C)
记得提醒博主更新方法! (已更新)
欢迎交流、补充、指正~~