C言語で進数変換プログラム

整数 x を n 進数で表記するプログラム

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

int convert(int x, int n){
    int y=0, i=0, z;
    while(x > 0){
        z = x%n;
        y += z*pow(10, i);
        x = x/n;
        i++;
    }
    return y;
}

int main(void){
    printf("%d\n", convert(5, 2));
}

アルゴリズム解説

  1. xが0以下の場合、ループ終了
  2. zにxをnで割った剰余を代入
  3. yにy+z*10iを代入
  4. xをnで割った商を代入
  5. iにi+1を代入
  6. 1へ戻る

実行を追ってみる

例)x=5, n=2のとき つまり、10進数の値5を2進数に変換したいとき

while文 1ループ目( x : 5)
- z : 5%2 = 1
- y : 0 + 1*100 = 1
- x : 5/2 = 2
- i : 1になる

while文 2ループ目(x : 2)
- z : 2%2 = 0
- y : 1 + 0*101 = 1
- x : 2/2 = 1
- i : 2になる

while文 3ループ目(x : 1)
- z : 1%2 = 1
- y : 1 + 1*102 = 101
- x : ½ = 0
- i : 3になる

while文 4ループ目(x : 0)
xが0になったため、ループを抜けて y を返す