C言語

【C言語】整数値の桁数を取得するプログラム


プログラミング初心者向けの練習問題の一つとして「整数値の桁数を求めるプログラムの作成」がありますが、これを実装する方法は、以下の2通りが考えられます。

  • for又はwhileループを活用する
  • log10関数を利用する

本記事では、それぞれのアプローチでの実装例を紹介していきます。

ループを活用したプログラム

まずはfor又はwhileループを活用して整数値の桁数を求める方法について解説します。

プログラム作成の手順

プログラム作成の手順は以下の通りです。

  1. 任意の整数を入力させる
  2. 整数が0になるまで繰り返し10で割り、その回数をカウントする

実装例

上記の手順に従ってプログラムを作成します。使用する言語はC言語です。

#include <stdio.h>
#include <math.h>

int main(void){

  int val, digits;

  /* 任意の整数値を入力 */
  printf("Enter an integer value : ");
  scanf("%d", &val);

  /* ループを回して桁数をカウント
   (※valが0になるまで10で割り続ける) */
  for (digits=0; val!=0; digits++) {
    val = val / 10;
  }
  printf("> %d digits.", digits);

  return 0;
}

このプログラムを実行すると以下の出力結果が得られます。

Enter an integer value : 1000
> 4 digits.

log10関数を利用したプログラム

次はlog10関数を利用して整数値の桁数を求める方法について解説します。

log10関数自体は桁数を求める関数ではありませんが、これを利用することで処理が比較的楽に実装できるようになります。

プログラム作成の手順

プログラム作成の手順は以下の通りです。

  1. 任意の整数を入力させる
  2. log10関数へ整数を入力し、その結果(int型変数に格納)を+1する

log10関数は対象の値が10の何乗であるかを計算します。入力値が10であれば1、100であれば2を返します。(※利用する際は#include <math.h>の記述が必須)

そのため、log10関数の計算結果の値(小数点以下は切り捨て)に+1すると、入力された整数値の桁数と等しい値になります。

実装例

上記の手順に従ってプログラムを作成します。使用する言語はC言語です。

#include <stdio.h>
#include <math.h>

int main(void){

  int val, digits;

  /* 任意の整数値を入力 */
  printf("Enter an integer value : ");
  scanf("%d", &val);

  /* log10関数を用いて桁数を計算 */
  digits = log10(val) + 1;
  printf("> %d digits.", digits);

  return 0;
}

このプログラムを実行すると以下の出力結果が得られます。

Enter an integer value : 1000
> 4 digits.