入门 · while + 除法

数位数

读入一个整数,打印它有几位。教你 % 10 和 / 10 的循环——所有数位操作题背后的两板斧。

题目

输入:一个整数 n(−10⁹ ≤ n ≤ 10⁹)。

输出:n 的位数(负号不算)。

样例:

输入输出
71
20484
01

你的解答

Program.cs — 你的解答
"用我的输入试跑"的自定义输入

判题完全在你的浏览器里对隐藏测试运行。代码随打随存(本地)。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 的处理——循环体先跑一次再查条件。题库第一轮毕业:回目录复习,或读整数除法为什么让拆位循环成立。