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;
}
最終更新:2014年05月07日 04:37