【解決方法】プログラムが桁数を読み取る


整数の桁数を表示するプログラムを書きました

#include<stdio.h>  
int main()
{
    int num , count=0;
    scanf("%d",&num);
    while(num)
    {
        num=num/10;
        count++;
    }
    printf("The number has %d digits",count);
    return 0;

プログラムは正常に動作しますが、num “0” にも 1 桁があることを出力したいので、0 と出力されます。

私が試したこと:

私は 1 でカウントを開始するようなことを考えましたが、残りは明らかに機能しています。

解決策 1

そして、これはあなたが1週間前に投稿した同じ質問からどうですか: 数字の桁数を数える C プログラム[^]

それ以来、答えは変わっていませんが、理解できない場合に備えて繰り返します。

見積もり:

最も簡単な解決策は? 初期値とテストを変更します。

カウント 1 から始めて、ループ チェックとして「10 以上」をテストすると、すべての正の値に対して正しい答えが得られます。

それが助けになるなら、あなたはそれをあなたの心の中で大声で読むことができます.

解決策 2

解決策は簡単です。 while ループの代わりに do-while ループを使用してみませんか?

解決策 3

見積もり:

数字の反転を印刷して

このようにタスクを正確に解決するのは良いことです。 新しい数値を作成しようとする代わりに、個々の数字を出力する方がよいでしょう。 100 などの数値も正しく表示されます。

解決策 4

見積もり:

プログラムは正常に動作しますが、num “0” にも 1 桁があることを出力したいので、0 と出力されます。

あなたのコードは、1 つの特定のケースを除いてどのケースでも機能します。
解決策 、この特定のケースを処理する特定のコードを追加します。

C++
<blockquote class="quote"><div class="op">Quote:</div>#include<stdio.h>  
int main()
{
    int num , count=0;
    scanf("%d",&num);
    // if num is special case
      // handle the special case
    // else
      // handle general case
      while(num)
      {
          num=num/10;
          count++;
      }
    // end of if
    printf("The number has %d digits",count);
    return 0;</blockquote>

コメント

タイトルとURLをコピーしました