C言語で整数の桁数を数える方法

数値の桁数を数えるには、次の2つの方法があります。

  1. 各数字を順番にループで判定:整数の各桁をループでたどり、整数が0になるまで処理を繰り返し、毎回目で桁数を1増やします。下記のようなコードになります。
#include <stdio.h>

int countDigits(int num) {
    int count = 0;
    if (num == 0)
        return 1;
    while (num != 0) {
        num /= 10;
        count++;
    }
    return count;
}

int main() {
    int num;
    printf("请输入一个整数:");
    scanf("%d", &num);
    int digits = countDigits(num);
    printf("位数为:%d\n", digits);
    return 0;
}
  1. 自然対数の演算により整数の桁数を獲得できる。具体的には以下である:
#include <stdio.h>
#include <math.h>

int countDigits(int num) {
    if (num == 0)
        return 1;
    int digits = (int) log10(num) + 1;
    return digits;
}

int main() {
    int num;
    printf("请输入一个整数:");
    scanf("%d", &num);
    int digits = countDigits(num);
    printf("位数为:%d\n", digits);
    return 0;
}

整数の桁数を出す方法は2種類あり、状況に応じてどちらを使うか選択できます。

bannerAds