Module: Koşullu döngü deyimi - while


Problem

6/20

Sayı basamakları

Theory Click to read/hide

Aşağıdaki sorunu çözmek için bir program yazmaya çalışalım: bir sayı girmeniz gerekiyor ve içindeki basamak sayısını belirleyin.

Çözüm fikri.
Sadece sayıdan son basamağı sırayla kesmemiz gerekiyor (bu, tamsayıyı 10'a bölerek sayıyı 10 kat azaltarak yapılabilir) ve her seferinde sayacı artırmamız gerekiyor. 
Sonuç olarak tüm sayıları kestikten sonra sayaç sayının basamak sayısını kaydedecektir.
Başka bir deyişle, algoritma şu şekilde formüle edilebilir: sayı sıfıra eşit değilken 10 kat azaltın ve sayacı 1 artırın.

sayı (n) sayaç Program şöyle görünecek:
...
statik boşluk Ana()
{
    int n = Convert.ToInt32(Console.ReadLine());
    int sayısı = 0;
    iken (n != 0)
    {
      sayı++;
      n = n / 10;
    }
}
Basamaklarla hesaplamayla ilgili diğer birçok görev olduğundan, bu programı iyi bilmeniz ve anlamanız gerekir. bir sayı.

Problem

Programı çalıştırın. 
Çalışmasının sonucuna bakın. Çıktı ifadesinde her şey yolunda mı? Bu kusuru nasıl düzeltebileceğinizi düşünün.
123 > 0 >
12 > 1 >
1 > 2 >
0 > 3 >
1
using System;   
2
class Program {   
3
    static void Main() {   
4
        int n = Convert.ToInt32(Console.ReadLine());   
5
        int count = 0;   
6
        while (n != 0) {   
7
            n /= 10; // краткая запись n = n / 10   
8
            count++;   
9
        }   
10
        Console.WriteLine(n + " contains " + count + " digits");   
11
    }   
12
}   

     

Program check result

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