KM-71情報Ⅰ 対策問題

共通テスト過去問チャレンジ令和8年度 追・再試験

令和8年度追・再試験 第3問 問2 Mさんは、図1をプログラムで扱うため、問題の各分野に0から始まる番号を「0:情報、1:国語、2:歴史、3:音楽、4:地理、5:日常」と振り、問題の番号を添字とする配列Bunyaの各要素に分野の番号を格納することにした(図4)。さらに、配列Bunyaを用いて問1の手順を自動化する図5のプログラムを作った。 すべての配列の添字は0から始まり、「……」は要素の略記である。「==」は左右の式の値が等しいときにだけ真となる比較演算子であり、関数「要素数(配列)」は、引数として配列が与えられ、その要素数を返す。変数saidaiは分野あたりの採用問題数の最大数を表し、図5では5を代入している。配列Saiyouは採用した問題を記録する配列で、各要素はあらかじめ0にしておき、対応する問題を採用したときに1にする。配列Mondaisuは分野の番号を添字とし、対応する分野の採用問題数を格納する。 なお、図4と図5の(01)行にある空欄「エ」「オ」は本問より前の設問で問われた箇所で、エには1(番号4の問題は国語)、オには0(番号6の問題は情報)が入る。本問で答えるのは、繰り返しの範囲【 カ 】、採用の条件【 キ 】、採用数の更新【 ク 】の3か所である。 図5の空欄【 カ 】・【 キ 】・【 ク 】に入る組合せとして最も適当なものを選べ。

KM-71の問題図版
解答・解説を見る

正解: 1

正答

1

問題の整理

手作業の手順「分野の採用数が最大数未満なら採用し、その分野の数を1増やす」を、そのままプログラムの空欄に翻訳する問題です。変数の役割を整理すると——i は問題番号、b はその問題の分野番号、Mondaisu[b] はその分野の現在の採用数、saidai は上限です。

解き方

  • カ (繰り返しの範囲): 全問題を調べたいので、i は 0 から最後の問題番号まで。添字が0から始まる配列では、要素数がN個なら最後の添字は N−1。よって 要素数(Bunya) − 1 です。「−1」を忘れると存在しない要素を参照してしまいます。
  • キ (採用の条件): 手順の「その分野の採用問題数が最大数未満であれば」をそのまま式にして Mondaisu[b] < saidai。添字は問題番号 i ではなく分野番号 b である点が重要です(分野ごとに数えているから)。
  • ク (採用数の更新): 採用したらその分野の数を1増やす → Mondaisu[b] + 1

「手作業の手順の言葉」と「プログラムの式」を1対1に対応させるのがコツです。日本語の「〜未満」は「<」、「1増やす」は「+1」と、機械的に置き換えられます。

正しい式を入れて、最初の3問だけ動きを確かめてみましょう(saidai=5、Mondaisuは全要素0からスタート)。

  • i=0: b = Bunya[0] = 2(歴史)。Mondaisu[2]=0 < 5 → 採用。Saiyou[0]=1、Mondaisu[2]は0+1=1
  • i=1: b = Bunya[1] = 0(情報)。Mondaisu[0]=0 < 5 → 採用。Saiyou[1]=1、Mondaisu[0]は1
  • i=2: b = Bunya[2] = 2(歴史)。Mondaisu[2]=1 < 5 → 採用。Saiyou[2]=1、Mondaisu[2]は2

「その問題の分野番号bを取り出す → 分野bの採用数と上限を比べる → 採用したら分野bの数を1増やす」という流れが、問1の手作業とぴったり対応していることがわかります。

選択肢の確認

1.○ 範囲は最後の添字まで、条件は分野の数<上限、更新は+1。
2.× 要素数のままだと範囲が1つはみ出す。==0では各分野1問しか採れない。
3.× Mondaisuの要素数(6)では問題を6個しか調べない。添字iも誤り。
4.× 「>0」や「−1」では「採用するほど減る」ことになり手順と逆。

ここだけは覚えよう

0始まりの配列の最後の添字は「要素数−1」 — 条件式は手順の日本語をそのまま式に置き換える。

関連問題

KM-70KM-72