本题要求实现一个求整数的逆序数的简单函数。
函数接口定义:
int reverse( int number );
其中函数reverse须返回用户传入的整型number的逆序数。
裁判测试程序样例:
#include <stdio.h>
int reverse( int number );
int main()
{
int n;
scanf("%d", &n);
printf("%d\n", reverse(n));
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
-12340
输出样例:
-4321
解题思路:
本题要求我们输出给出的整数的逆序数,即从右到左重新输出。理解了就好办,我们只需要从右到左依次获取当前数位上的数字,然后将这些数字以相差10倍的关系加起来即可。但是本题要求输入时负数,输出也必须是负数。这就涉及到负数的取模问题了,详细可以看看这个大佬的文章负数取余问题。结果发现,正数与负数的算法竟然是一样的,所以我们仅考虑正数情况即可。最后别忘了返回 sum 。
举几个例子好理解:
number=-4001
a=-1,number=-400,sum=-1
a=0,number=-40,sum=-10
a=0,number=-4,sum=-100
a=-4,number=0,sum=-1004
number=300
a=0,number=30,sum=0
a=0,number=3,sum=0
a=3,number=0,sum=3
number=-20
a=0,number=-2,sum=0
a=-2,number=0,sum=-2
具体代码:
int reverse( int number ){
int a=0;
int sum=0;
while(number){
a=number%10; // a 用于获取当前 number 个位上的数字
number=number/10;
sum=sum*10+a;
}
return sum;
}
本文介绍了一个简单的函数,用于求解整数的逆序数。通过实例解析算法原理,并提供具体的代码实现。
785

被折叠的 条评论
为什么被折叠?



