题目描述
给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。
输入格式
一个整数 NN
输出格式
一个整数,表示反转后的新数。
输入输出样例
输入 #1复制
123
输出 #1复制
321
输入 #2复制
-380
输出 #2复制
-83
说明/提示
数据范围
-1,000,000,000≤N≤1,000,000,000−1,000,000,000≤N≤1,000,000,000。
这道题其实只有两个难点;
- 当尾数是0时,不用在反转数中出现。
- 输入的数是有符号的,需要分开处理
很多人看到反转可能都会用到数组,但是我们不妨想一种算法可以将一个数反转,只是就不得不提‘%’了,当一个数n%10,就求出了其最后一位,我们可以采用这种方法将一个数反转。然后就是带符号的问题,我们可以对输入的数取绝对值,然后再输出的时候判断一下就行。代码如下:
#include <stdio.h>
#include <math.h>
int main()
{
int n;
int i, temp, x=0;
scanf("%d", &n);
temp = abs(n);
while (temp > 0) //将数n反转
{
x = x * 10 + temp % 10;
temp = temp / 10;
}
if (n >= 0)
printf("%d", x);
else
printf("%d", -x);
return 0;
}