7-42 逆序的三位数(C语言版)

xiaoxiao2025-06-09  14

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 那结局就比较尴尬了,如果想要正确,还需添加其它的判断语句(如果是个多位数,那情况就会更复杂,整数中间的零和整数末尾的零区别,输出),务必会浪费许多时间,还不如用整数位上的数来计算,来的痛快呢!所以这个细节自己应该铭记,现在写出来,以防自己忘记! 如果要求多位数的逆序,可以参考第一种的方法,运用递归函数实现。 加油!

转载请注明原文地址: https://www.6miu.com/read-5031523.html

最新回复(0)