ここから本文です

解決済みのQ&A

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

eparogiruさん

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

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

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

  • 質問日時:
    2012/5/24 20:00:58
  • 解決日時:
    2012/5/27 18:36:15
  • 閲覧数:
    192
    回答数:
    2
  • お礼:
    知恵コイン
    50枚

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

doughnut_2012さん

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");
}

  • 違反報告
  • 編集日時:2012/5/25 01:56:25
  • 回答日時:2012/5/25 01:55:52

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

(1件中1〜1件)

 

ii3pvy63さん

実装例です。

#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をキーワードで検索:

PR

総合Q&Aランキング

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

知恵コレに追加する

閉じる

知恵コレクションをするID/ニックネームを選択し、「追加する」ボタンを押してください。
※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。

ほかのID/ニックネームで利用登録する