#翻轉整數-簡單
數學
題目:
給出一個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。
注意:
假設我們的環境只能存儲得下 32 位的有符號整數,則其數值範圍爲 [−231, 231 − 1]。請根據這個假設,如果反轉後整數溢出那麼就返回 0。
思路:
用%取的整數的最低位,作爲翻轉數後的高位,同時用變量c來存儲每次的結果,並判斷輸入的數字又沒在數據範圍之外,如果有就返回0;判斷這個數有幾位就每次把這個數除以10當商爲0,就代表最高位就結束了。
int reverse(int x){
static int a, i;
long c ;
for(i=0;i<20;i++)
{
a=x%10;
x=x/10;
c=a+c*10; //作爲結果輸出
if( c>0x7fffffff || c<(signed int)0x80000000)
{
return 0;
}
if(0==x)
break;
}
return c;
}