给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
https://leetcode-cn.com/problems/reverse-integer/
#include <stdio.h>
#include <string.h>
#include<stdlib.h>
int reverse(int x)
{
unsigned int mul = 1;
int temp = x;
while (temp >= 10 || temp <= -10) {
temp /= 10;
mul *= 10;
}
int sum = 0;
int get = 0;
while (x != 0) {
get = x % 10;
x /= 10;
sum += get * mul;
mul /= 10;
}
if ((x > 0 && sum < 0) || (x < 0 && sum>0)) {
sum = (-1)*sum;
}
//判断是否溢出
if (get != (sum % 10)) {
return 0;
}
return sum;
/*int sn=10;
int i;
double tmp, sum = 0;
for (i = x; i; i /= sn)
{
tmp = i % sn;
sum = sum * sn + tmp;
}
if (sum>2147438647||sum<-21474386478)
{
2147483641
return 0;
}
else
{
return sum;
}
return 0;*/
}
int main()
{
int a = 0;
a = reverse(1463847412);
printf("%d", a);
/*double e = -2147483648;
double f = -21474386478;
if (e<f )
{
printf("1");
}
*/
system("pause");
return 0;
}