您的位置:首页 > 其它

整数反转

2017-10-20 23:22 190 查看

算法题目:反转给定的正数

提示:假设输入为32位有符号整数

[b]例子:[/b]

Example1: x = 123, return 321
Example2: x = -123, return -321


[b]实现代码:[/b]

#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 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10;
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++)   //这里i则要当成常量,for循环里面的程序不能改动i
{
out = out + a[k] * tens[j];
printf("out is %d\n", out);
k++;
}

out = out*s;
return out;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: