题目
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
Note:
The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed integer overflows.
分析
1 负数怎么处理?
2 超出范围数据怎么处理,如11113 翻转后31111超范围怎么办?
处理方案
1 负数先变成正数处理,最后 再加个负号回去;
2 若是超出范围,返回值为0
代码
#include < stdio.h >
#include < limits.h >
#include < float.h >
int main()
{
int m=0 ;
int x ;
int reverse( int x );
scanf("%d\n" , &x );
m = reverse( x );
}
int reverse(int x)
{
int flag = 0;
long int reg = 0;
int n = 0;
//将负数处理为整数
if(x<0)
{
x = -x;
flag = -1;
}
//翻转输出
while(x)
{
reg = reg * 10 + x % 10;
x/=10;
printf("%d\n",reg);
}
//判断是否 数超阈值
if(reg > INT_MAX || reg < INT_MIN)
{
reg = 0;
}
// 负数变回正数
if(flag == -1)
{
reg = -reg;
}
return reg;
}