本题要求实现一个求整数的逆序数的简单函数。
函数接口定义:
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
来源:
来源:PTA | 程序设计类实验辅助教学平台
链接:https://pintia.cn/problem-sets/12/exam/problems/313
提交:
题解:
#include <math.h>
/*
* 求整数 number 的逆序数
*/
int reverse(int number) {
// flag 记录 number 是正数还是负数:[0]负数 [1]正数
int flag = 1;
// 保证 number 是正数以方便模运算
if (number < 0) {
number = -number;
flag = 0;
}
int temp = number;
// count 统计数 number 的位数
int count = 0;
while (temp != 0) {
temp /= 10;
count++;
}
int result = 0;
// 实现 number 逆序,最终得到 number 的逆序数 result
while (number != 0) {
int lastNumber = number % 10;
// number = 123 时,其逆序数 321 = 3*10² + 2¹ + 1*10⁰,item 为其中的某一项
int item = lastNumber * (int) pow(10, count - 1);
result += item;
number /= 10;
count--;
}
// 根据 flag 的值决定逆序数 result 的符号
result = flag == 0 ? -result : result;
return result;
}