アルゴリズムとプログラミング
基本情報技術者試験 科目A免除 修了試験 20120122 実施分 問1
次の流れ図は,10 進整数 j(0<j<100)を 8 桁の 2 進数に変換する処理を表している。2 進数は下位桁から順に,配列の要素 NISHIN(1) から NISHIN(8) に格納される。流れ図の a 及び b に入る処理はどれか。ここで,j div 2 は j を 2 で割った商の整数部分を,j mod 2 は j を 2 で割った余りを表す。
流れ図: 開始 → 「j を入力」(入力平行四辺形)→ ループ始端「変換 k : 1, 1, 8 (注)」→ 処理 a → 処理 b → ループ終端「変換」→ 終了。(注) ループ端の繰返し指定は,変数名:初期値,増分,終値 を示す。
選択肢の表:
| a | b | |
|---|---|---|
| ア | j div 2 → j | j mod 2 → NISHIN(k) |
| イ | j div 2 → NISHIN(k) | j mod 2 → j |
| ウ | j mod 2 → j | j div 2 → NISHIN(k) |
| エ | j mod 2 → NISHIN(k) | j div 2 → j |
- ア a: j div 2 → j / b: j mod 2 → NISHIN(k)
- イ a: j div 2 → NISHIN(k) / b: j mod 2 → j
- ウ a: j mod 2 → j / b: j div 2 → NISHIN(k)
- エ a: j mod 2 → NISHIN(k) / b: j div 2 → j
出典:基本情報技術者試験 科目A免除 修了試験 20120122 実施分 問1
答えと解説を見る
正解:エ
覚える知識
10進→2進変換アルゴリズム(除算2進法)
10進整数を2で繰り返し割り、各回の余りを下位桁から並べると2進数が得られる。
この問題で必要なこと
10進整数を2で割った余りを下位桁から順に格納し、商を次の被除数にする。余りを格納してから商でjを更新する順序を読み取る。
ひっかけ
jの更新を先に行うと余りが失われる、div/modの取り違え、格納先と更新先の取り違え。
この知識の出題:本試験系 1 回・免除試験 3 回(公開問題での観測値)