[C言語]1 以上の整数を一つ入力し,その整数の桁数を求めて表示するプログラム

プログラミング
<<プログラミングを学びたい方はこちら!>>

今回は以下のプログラムの書き方を解説していきます。

1 以上の整数を一つ入力し,その整数の桁数を求めて表示するプログラムを作成せよ

桁数を求めるには10で何回割れるかを考えていけば求められそうです。詳しくは以下のプログラムで解説していきます。

サンプルコードと実行結果

1 以上の整数を一つ入力し,その整数の桁数を求めて表示するプログラムを作成せよ

サンプルコード

コードは以下の通り (/**/で囲まれた部分は説明文のためコードではないです)

#include<stdio.h>

int main(){

    /*整数型変数n,countを定義*/
    int n,count;

    /*nの数値をキーボードから代入*/
    /*while(1)またはfor(;;)で無限ループ*/
    /*breakで無限ループ終了*/
    while(1){
        printf("入力:n=");
        scanf("%d",&n);
        if(n<0){
            printf("0以上の数値を入力してください.\n");
        }else{
            break;
        }
    }

    /*countを初期化*/
    /*n>0なら10で割り、countを1増やす*/
    count=0;
    while(n>0){
        count++;
        n/=10;
    }

    /*結果を表示*/
    printf("出力:%d桁",count);

    return 0;
}

実行結果

実行結果は以下の通り

入力:n=1234567
出力:7桁

サンプルコードの挙動

「10で何回割れるか」が知りたいため、割った回数を記憶する変数を用意します。サンプルコードではcountとしています。

10で繰り返し割る作業にはwhile文を利用します。条件式は n > 0 とします。
コードでは n /= 10 ( n = n / 10 と同じ) と、 count++ ( count = count + 1 と同じ)を繰り返し実行します。

例えば、123の桁数を求めるとすると

  • n = 123 とする
  • n > 0 を満たすのでwhileループに入る
    123 ÷ 10 = 12 ( n = 12 に上書きする)
    count = 1
  • n > 0 を満たすのでwhileループに入る
    12 ÷ 10 = 1 ( n = 1 に上書きする)
    count = 2
  • n > 0 を満たすのでwhileループに入る
    1 ÷ 10 = 0 ( n = 0 に上書きする)
    count = 3
  • n > 0 を満たさないのでwhileループか抜ける
  • count = 3 のため3桁とわかる

おすすめ参考書紹介

「苦しんで覚えるC言語」はひとつひとつの要素をスローモーションでゆっくり確実に解説していることが特徴です。真面目にC言語を覚えたい初心者向けで、コツコツと確実に力をつけていくことができます。

「スッキリわかるC言語入門 第2版 (スッキリわかる入門シリーズ)」は「苦しんで覚えるC言語」に比べより親しみやすいイラストや構成で苦手意識を持ちにくい工夫が施されています。

コメント

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