- 最後登錄
- 2024-5-14
- 在線時間
- 28998 小時
- 註冊時間
- 2011-12-11
- 閱讀權限
- 95
- 精華
- 3
- UID
- 10643381
- 帖子
- 3223
- 積分
- 24364 點
- 潛水值
- 77320 米
| 如果瀏覽伊莉時速度太慢或無法連接,可以使用其他分流瀏覽伊莉,www01.eyny.com(02,03)。 tsou88 發表於 2013-11-26 02:16 PM
snowflying大大,您的程式很O.K.;但小弟才疏學淺,可否請您撥冗對您寫的程式略加註解說明?萬分感謝! ... 若 x 是 0,直接回傳 0 (終止條件)- if(x < 0)
- return -reverseInt(-x);
複製代碼 若 x 為負值,先將他取絕對值,運算後再加上負號- int last = x % 10;
- int first = 1;
- if(last != 0)
- {
- while(first <= x)
- first *= 10;
- first /= 10;
- }
複製代碼 last 為取 x 的個位數
first 是用來找 10的次方數
如 5234 (四位數)
first 找到後,值為 1000
原因就是 5234 的 4 要移到前面
就是 4 * 1000 + reverseInt(523)
if(last != 0)
只是個位數為 0 時,可以省掉這個步驟,因為 0 移到前面沒影響
這句可以省掉
最後回傳 last * first + reverseInt(x/10);
last * first 就是個位數提前
reverseInt(x/10) 就是前面部分倒轉後接在原來的個位數後面
---------------------------------------------------------------
上面是以個位數提前的方式來做
你也可以用最高位移到後面的方式處理,不過要注意連續 0 的部分... |
|