10進数を2進数に変換するプログラムを教えて下さい。
関数はmain()でできるたけ簡単なやつでお願いします。

補足
   もう少し簡単にお願いしますm(__)m恐縮ですが 


解答例
#include <stdio.h>
 
int main(void) {
    int x, i;
    char tmp[64] = {0};
 
    printf("10進数を入力して下さい: "); scanf("%d", &x);
 
    for (i = 0; x > 0; i++) {
	tmp[i] = x % 2;
	x /= 2;
    }
 
    printf("2進数で表すと... ");
    for (i -= 1; i >= 0; i--) {
	printf("%d", tmp[i]);
    }
    printf("\n");
 
    return 0;
}
 



C言語です。正の整数を1つ入力し、それを2進数に変換して出力するプログラムをfor文を用いて作れ。

という問題(配列を使わず、#include<stdio.h>のみで)なのですが、まったく分かりません。サンプルコードを書いてもらえると非常に助かります。


解答例
#include <stdio.h>
 
/* unsigned型のビット数を返却 */
/* cf. http://www.bohyoh.com/CandCPP/FAQ/FAQ00018.html */
int int_bits(void)
{
    int count  = 0;
    unsigned x = ~0U;
 
    while (x) {
        if (x & 1U) count++;
        x >>= 1;
    }
    return count;
}
 
int main(void) {
    int x, i;
 
    printf("10進数を入力して下さい: "); scanf("%d", &x);
 
    /* 以下は処理系依存 */
    /* int_bits = sizeof(int) * CHAR_BITS; */
 
    i = int_bits();
    while (--i) {
	if ((x >> i) & 1) {
	    break;
	}
    }
    printf("2進数で表すと... ");
    do {
	printf("%d", (x >> i) & 0x1);
    } while (i--);
    printf("\n");
 
    return 0;
}
 



解答例
#include <stdio.h>
 
void binDisp(int n) {
    if (n > 1) {
	BinDisp(n / 2);
    }
    printf("%d", n % 2);
 
    return;
}
 
int main(void) {
    int x;
 
    printf("10進数を入力して下さい: "); scanf("%d", &x);
 
    printf("2進数で表すと... ");
    binDisp(10);
    printf("\n");
 
    return 0;
}
 

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2014年05月07日 04:37