算法题目:反转给定的正数
提示:假设输入为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 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;
}
版权声明:本文为yph001原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。