課題 [6] 配列(4/9)

4(提出プログラム名:ex0604.c)

整数 n を読み込み,その値を以下の手順に従って 2 進法で出力するプログラムを作りなさい.
以下の手順に従っていない場合,正しく動作しても不正解と見なされるので注意せよ.)
ただし,出力する 2 進数のビット長はマクロ SIZE で定義されるものとする.
この問題ではマクロ SIZE の値を 8 と定義し,整数 n は 1 以上 256 未満であると仮定してプログラムを作ってよい.
提出するソースファイル(ソースプログラム)のファイル名は ex0604.c としなさい.
なお,プログラムの中ではマクロ定義部分を除いて 8 や 7 と直接書いてはいけません.必要ならば SIZESIZE-1 と書きなさい.

【手順】
ここでは,2 進法表記を格納するための int 配列を bin とする.
 ① 最初に読み込んだ n を別の int 型変数 x にコピーする.(x = n;

 ② for ( i = 0; i < SIZE; i++ ){ ... } として③,④の処理を繰り返す:
   ③ x2 で割った余りを bin[i] に代入する( bin[i] = x % 2;
   ④ xx/2 で上書きする( x /= 2; )※小数点以下は切り捨てるのでキャストは不要.

 ⑤ 上の for 文が終わった後に配列 bin の内容を逆順に出力する.
  (※表示するだけです.
    数字を逆順に入れ替えたり,別の配列へ逆順にコピーしたりしてはいけません.)

※なぜ上の手順で 2 進法表記が得られるのかについては,
1 年生の「情報リテラシー入門」の教科書を参照せよ.

  • 【プログラムの実行結果】(その1)赤字は実行時にキーボードから入力する内容
    ※ 2 進法表記での 0 や 1 は途中に空白を入れずにくっつけて表示させること
    011011000 1 1 0 1 1 0 0 としないこと)
n を入力してください:108
108 は 2 進法表記で 01101100 になります
  • 【プログラムの実行結果】(その2)赤字は実行時にキーボードから入力する内容
n を入力してください:254
254 は 2 進法表記で 11111110 になります
 ※出力が実行例 1 と同じ「108 は」になってしまっていないか注意せよ.
  • 【プログラムの実行結果】(その3)赤字は実行時にキーボードから入力する内容
n を入力してください:7
7 は 2 進法表記で 00000111 になります

【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
実行の画面出力が上の例と違うきちんと確認していない).
  (例1)「 は 2 進法表記で」の「」が実際に入力した n の値になっていない.
  (例2)出力された 2 進数が間違っている(逆順になっていない,1 個ずれている等).
  (例3)出力された 2 進数の前後に不要な空白が入っている
      (実行例1の場合: 01101100 になっておらず 0 1 1 0 1 1 0 0 となっている).
■ 問題文で指示された手順に従っていない
■ マクロ SIZE を使わずに for 文の繰り返し条件で 8 や 7 といった数字を直接書いている.
インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).


ミスが無いことを確認したら次の問題へ → [ 問5 (ex0605.c) ]