算法题目:反转给定的正数
提示:假设输入为32位有符号整数
例子:
Example1: x = 123, return 321
Example2: x = -123, return -321
实现代码:
#include <stdio.h>
int reverse(int x);
int main()
{
int b;
b = reverse(-567465862);
printf("b is %d", b);
return 0;
}
int reverse(int x) {
int a[10] = { 1 };
int tens[10] = { 1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000 };
int i, j,k, s = 1;
int out = 0;
if (x<0)
{
s = -1;
x = x*(-1);
}
a[0] = (int)(x / 1000000000);
a[1] = (int)(x % 1000000000 / 100000000);
a[2] = x % 100000000 / 10000000;
a[3] = x % 10000000 / 1000000;
a[4] = x % 1000000 / 100000;
a[5] = x % 100000 / 10000;
a[6] = x % 10000 / 1000;
a[7] = x % 1000 / 100;
a[8] = x % 100 / 10;
a[9] = x % 10;
for (i = 0; i<10; i++)
{
if (a[i]>0)
break;
}
k = i;
for (j = 0; j<(10 - i); j++)
{
out = out + a[k] * tens[j];
printf("out is %d\n", out);
k++;
}
out = out*s;
return out;
}