整数反转

算法题目:反转给定的正数
提示:假设输入为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;

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值