非首发非搬运,本人才疏学浅,如有不足欢迎指正!
非首发非搬运,本人才疏学浅,如有不足欢迎指正!
非首发非搬运,本人才疏学浅,如有不足欢迎指正!
题目作者:C课程组 单位:浙江大学
本题要求实现一个求整数的逆序数的简单函数。
函数接口定义:
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
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
话不多说,上代码。
有注释版:
int reverse( int number )
{
int symbol = 1,sum = 0,last;
if(number<0) //负转正。
{
symbol = -1; //后续会用此变量把转换成正数的负数重新转换成负数,再作为返回值。
number *= symbol; //将输入的负数暂时转化为正数,方便计算。
}
while(number>0) //若全部数字提取完毕,变量number会变成0,while循环结束。
{
last = number % 10; //提取当前数字的最后一位。
sum = sum * 10 + last; //将最后一位数字加入到sum的末尾。
number /= 10; //提取一位数字后,利用整型的“截断”机制将此数字删除,进行下一个循环。
}
sum *= symbol; //得到的数字本来是负数,则加一个负号,正数则无影响。
return sum;
}
/* CSDN社区 天涯远行客2004原创 */
无注释版(做PTA请复制这块代码):
int reverse( int number )
{
int symbol = 1,sum = 0,last;
if(number<0)
{
symbol = -1;
number *= symbol;
}
while(number>0)
{
last = number % 10;
sum = sum * 10 + last;
number /= 10;
}
sum *= symbol;
return sum;
}
原创不易,转载请标明出处,如有错误欢迎指正!
原创不易,转载请标明出处,如有错误欢迎指正!
原创不易,转载请标明出处,如有错误欢迎指正!