給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。
示例 1:
輸入: 123
輸出: 321
示例 2:
輸入: -123
輸出: -321
示例 3:
輸入: 120
輸出: 21
注意:假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為
剛看到這題題目,第一反應是先將整數轉化為字串,然後判斷有無符號,再逆序輸出。
但是這種方法要在字串和數字之間進行轉換兩次,比較麻煩,而且轉換效率也不高,還要用到很多庫函式,所以更推薦通過數學計算的方法來求解。
#include
官方解法:
這種思路比較好,x通過對10取餘數,得到個位上的數,再將其存到ans變數裡,通過迴圈迭代,不斷得到十位、百位、千位上的數字,然後判斷是否溢位。沒有溢位的話就直接輸出。
判斷溢位條件是:
對於整數,如果 (ans > integer.max_value / 10 || (ans == integer.max_value / 10 && pop > 7)) ,則一定溢位。 其中, ans = ans * 10 + pop
用網上大神分享的圖來表示比較容易理解:
以及上下限個位上數字的求法,非常直觀
正序逆序輸出正整數中各位數字
一 輸出整數各位數字 求出它是幾位數 分別列印出每一位數字 按逆序列印出各位數字。define crt secure no warnings include include intgetdigit int num 整數有多少位 return count void reprintnum int num...
實驗4 2 8 輸出整數各位數字
本題要求編寫程式,對輸入的乙個整數,從高位開始逐位分割並輸出它的各位數字。輸入在一行中給出乙個長整型範圍內的非負整數。從高位開始逐位輸出該整數的各位數字,每個數字後面有乙個空格。1 2 3 4 5 6 方案1 常規方法 include include intmain int number 1 用於表...
求整數字數,以及順序與逆序輸出各位數字
1求位數,演算法 每次丟棄個位數字,計數器 直到n為0 與我們用眼睛去數類似,即不斷給該整數除以十,計數,此處要考慮當給的整數字0時的特殊情況,c 如下 int count long long n return tmp 2.逆序輸出 演算法 求出低位,輸出低位,再丟棄低位,重複執行直到n為0 這裡關...