入門 · while + 除法
數位數
讀入一個整數,列印它有幾位。教你 % 10 和 / 10 的迴圈——所有數位操作題背後的兩板斧。
題目
輸入:一個整數 n(−10⁹ ≤ n ≤ 10⁹)。
輸出:n 的位數(負號不算)。
樣例:
| 輸入 | 輸出 |
|---|---|
7 | 1 |
2048 | 4 |
0 | 1 |
你的解答
"用我的輸入試跑"的自定義輸入
判題完全在你的瀏覽器裡對隱藏測試執行。程式碼隨打隨存(本地)。Ctrl+Enter 判題。
卡住了?提示
提示 1 —— 兩個運算
n % 10 是末位;n / 10 是去掉末位的數(整數除法!)。2048 → 204 → 20 → 2 → 0——數到零為止,數步數。
提示 2 —— 兩個坑
坑一:while (n > 0) 對 n = 0 一輪都不跑——你會列印 0 位,但 0 有一位。坑二:負數輸入會讓 n > 0 永遠迴圈……先 Math.Abs(n)。
解答(先自己試!)
int n = Math.Abs(int.Parse(Console.ReadLine()));
int digits = 0;
do
{
digits++;
n = n / 10;
} while (n > 0);
Console.WriteLine(digits);
// 捷徑:ToString() 讓 Length 幫你數
int n = int.Parse(Console.ReadLine());
Console.WriteLine(Math.Abs(n).ToString().Length);
do-while 白送了對 n = 0 的處理——迴圈體先跑一次再查條件。題庫第一輪畢業:回目錄複習,或讀整數除法為什麼讓拆位迴圈成立。