Module: 带条件的循环语句 - while


Problem

6/21

数字位数

Theory Click to read/hide

让我们尝试编写一个程序来解决以下问题:

您必须输入一个数字(小于3,000,000)并确定其中的位数。

解决思路


让我们开始计算一个数字的数字。最初,计数器为 0。我们只需要依次从数字中删除最后一位(这可以通过将数字减少 10 次,使用整数除以 10 来完成),每次我们需要将计数器增加1. 
这样一来,我们把所有的数字都截掉之后,在计数器中我们就会得到数字中的位数。
换句话说,该算法可以表述如下:
直到数字不为零,将其减少 10 次并将计数器增加 1。

<头> <正文> 该程序将如下所示。 <前> <代码>var n,计数:整数; 开始    阅读(n);    计数:= 0;    而 n <> 0开始        计数 += 1;         n := n div 10;    结尾;     writeln('Number - ', n, ' 包含', count, ' digits'); 结尾。 你需要牢记这个程序,因为。在此基础上,解决了其他许多与数字计算有关的问题。

Problem

运行程序。 

看看她的工作成果。
输出短语一切正常吗?
想想如何解决这个问题。
数 (n) 计数器
123 0
12 1
1 2
0 3
1
var n, count: integer; 
2
begin 
3
    read(n); 
4
    count := 0; 
5
    while n <> 0 do begin 
6
        count += 1; 
7
        n := n div 10; 
8
    end; 
9
    writeln('Number - ', n, ' contains ', count, ' digits'); 
10
end. 

     

Program check result

To check the solution of the problem, you need to register or log in!