ここから本文です

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

epa********さん

2012/5/2420:00:58

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

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

御回答お待ちしております。

閲覧数:
306
回答数:
2
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

dou********さん

編集あり2012/5/2501:56:25

n bit の正の整数 a が入力されたとする. a を 2 進法で表せば, a は
..........a(n-1) a(n-2) ・・・ a(1) a(0)..........( a(i) == 0 又は a(i) == 1 )
という形をしている. そこで,

a(n-1) の値が 1 か 0 かを調べて, それを出力する,
a(n-2) の値が 1 か 0 かを調べて, それを出力する,
...................................:
a(0) の値が 1 か 0 かを調べて, それを出力する,

というように処理すれば良い.


#include <stdio.h>
main(){
unsigned i;
unsigned a; /* 正の整数 */
int n=8*sizeof(a); /* aのサイズ[bit] */
scanf("%d",&a);
for(i=1<<(n-1);i>0;i>>=1) /* a(n-1),a(n-2),…,a(0)の値を調べる */
printf("%d",(a&i)?1:0);
printf("\n");
}

ベストアンサー以外の回答

1〜1件/1件中

ii3********さん

2012/5/2421:59:45

実装例です。

#include <stdio.h>

int ToBin(int n) {
return n == 0 ? 0 : ToBin(n / 2) * 10 + n % 2;
}

int main(void) {
int n;
printf("正の整数を入力:");
scanf("%d", &n);
printf("%dを2進数で表すと%d\n", n, ToBin(n));
return 0;
}

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる