KM-80|情報Ⅰ 対策問題
令和8年度追・再試験 第3問 問3 (実際の図) 前問に続き、問題が重複しない四つのクイズ集(1番〜4番)を作る図6のプログラムを考える。変数cはいま作っているクイズ集の番号(1〜4)、bは問題の分野番号、iは問題の番号である。配列Saiyouは0で初期化され、要素(0でないもの)が「何番のクイズ集に採用されたか」を表す。(09)行目は「何番のクイズ集に採用されたか」を記録するようにしている。 (11)行目からの繰返しは、どの問題がどのクイズ集に採用されたかを表示する。空欄カには「要素数(Bunya) - 1」が入る。Mさんは図6のプログラムを実行し、「番号0の問題を1番のクイズ集に入れる」などの出力(図7)を得てクイズ集の作成を終えた。 図6の(09)行目の空欄シ(Saiyou[i]に記録する値)と、採用された問題だけを表示するための(12)行目の空欄スに入る組合せとして最も適当なものを選べ。

解答・解説を見る
正解: 1
正答
1
問題の整理
変数が何を表すかの整理が全てです——c はいま作っているクイズ集の番号(1〜4)、b は問題の分野番号、i は問題番号。Saiyou[i] には「問題iが何番のクイズ集に採用されたか」を入れたいのでした。
解き方
- シ (記録する値): 「何番のクイズ集に採用されたか」を記録するのだから、入れるべきはクイズ集の番号 c です。(13)行の表示文で Saiyou[i] がそのまま「◯番のクイズ集」として使われていることからも確認できます。b(分野)や i(問題番号)を入れると、表示が「分野番号のクイズ集」「自分自身の番号のクイズ集」になってしまい意味が通りません。
- ス (表示の条件): 採用された問題は Saiyou[i] に1〜4のどれかが入り、採用されなかった問題は初期値の0のままです。だから「採用された問題だけ」は Saiyou[i] > 0 で選べます。図7の出力を見ると「番号143の問題を4番のクイズ集に入れる」のように、1番だけでなく4番のクイズ集の問題も表示されていることが、この条件の裏付けになります。
Saiyou[i] == 1 とすると「1番のクイズ集に採用された問題だけ」になり、2〜4番の分が表示されません。「0か、0以外か」で未使用と使用済みを見分けるこの設計は、前問の Saiyou[i] == 0(未採用チェック)と表裏一体です。1つの配列が「採用されたか」と「どこに採用されたか」の2つの情報を兼ねている——効率のよいデータ設計の実例として覚えておきましょう。
選択肢の確認
1.○ 記録するのはクイズ集番号c、表示は0以外(=採用済み)。
2.× 1では「何番のクイズ集か」が分からない。条件も逆。
3.× bは分野番号で、クイズ集の番号ではない。
4.× iは問題自身の番号。==1では1番のクイズ集しか表示されない。
ここだけは覚えよう
配列の値に「番号」を入れれば、0=未使用/1以上=どこで使ったか、を1つで表せる — 変数の意味の取り違えに注意。