7-42 逆序的三位数(C语言版)
程序员文章站
2022-07-15 14:02:59
...
7-42 逆序的三位数 (10 分)
程序每次读入一个正3位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。
输入格式:
每个测试是一个3位的正整数。
输出格式:
输出按位逆序的数。
输入样例:
123
输出样例:
321
参考代码
#include<stdio.h>
int main()
{
int n,a,b,c,sum=0;
scanf("%d",&n);
a=n/100;//百位
b=n%10;//个位
c=(n/10)%10;//十位
sum=b*100+c*10+a;
printf("%d",sum);
return 0;
}
注:这道题其实很简单,之所以会写这道题。是因为我写类似的逆序题目程序时忽略一个小细节,导致程序出错,之前总感觉要求一个整数的所有位的数太麻烦,所以我就定义一个字符串,将字符串逆序输出,只要判断字符串首位不为零即可输出,如下代码:
错误代码
#include<stdio.h>
int main()
{
char s[5];
int len,i;
gets(s);
len=strlen(s);
for(i=len-1;i>=0;i--)
{
if(s[i]=='0'&&i==len-1)
{
continue;
}
else
{
printf("%c",s[i]);
}
}
return 0;
}
这个代码只可将最末尾的0去除,如果一个三位数末尾有两个0,比如200 那结局就比较尴尬了,如果想要正确,还需添加其它的判断语句(如果是个多位数,那情况就会更复杂,整数中间的零和整数末尾的零区别,输出),务必会浪费许多时间,还不如用整数位上的数来计算,来的痛快呢!所以这个细节自己应该铭记,现在写出来,以防自己忘记!
如果要求多位数的逆序,可以参考第一种的方法,运用递归函数实现。
加油!
上一篇: C入门——逆序的三位数
下一篇: 逆序三位数---C语言