C言語-10進法を16進法に変換する

比較的よく見るタイプの問題

書き方は人それぞれなんですが今回はオーソドックスなやり方です。

コード

#include <stdio.h>
int main(void) {
  int i=0,j=0;
  int num;
  char henkan[16] = "0123456789ABCDEF";
  char answer[10];

  printf("整数を入れてください:");
  scanf("%d",&num);

  while(num > 0) {
    // 入力した数値を16で割り、その余りと商をだす
    j = num % 16;
    num = num / 16;
    answer[i] = henkan[j];
    i++;
  }
  i--;

  printf("この整数を16進法に変換すると");

  for(j=i; j>=0; j--) {
    printf("%c",answer[j]);
  }
  printf("\n");
  return 0;
}

ちょっと解説します.

といっても10進法を16進法に置き換える手計算を地道にやっているだけです.

10進数から16進数に変換する|基数変換|基本情報技術者講座

実行結果

整数を入れてください:123456789
この整数を16進法に変換すると75BCD15