欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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