
基本情報技術者試験 令和7年度 公開問題 科目B、全6問のうちの問4。
出典:令和7年度 基本情報技術者試験 公開問題 科目B 問4(プログラムは原本の画像を文字に書き起こし、字下げは 1 段を空白 2 つで表した。空欄は[ ]で表した)
次の
関数 search は,
関数 search を
/* keyは,要素数1以上の配列である */○整数型の配列: search(文字型の配列: data, 文字型の配列: key)整数型: i, j, lenData, lenKey整数型の配列: result ← {} // 要素数0の配列lenData ← dataの要素数lenKey ← keyの要素数/* (lenData - lenKey + 1) が0以下のときは繰返し処理を実行しない */for (i を 1 から (lenData - lenKey + 1) まで 1 ずつ増やす)for (j を 1 から lenKey まで 1 ずつ増やす) // αif (data[i + j - 1] が key[j] と等しい) /*** β ***/if (j が lenKey と等しい)resultの末尾 に iの値 を追加するendifelseαの行から始まる繰返し処理を終了するendifendforendforreturn result
- ア1
- イ2
- ウ3
- エ4
- オ5
- カ6
- キ7
- ク8
- ケ9
- コ10
答えと解説を開く
正解はクです。
lenData = 8、
ほかの選択肢が違う理由
- ア1 回は
少な すぎます。 i = 1 で a と b が 一致する 2 回だけでも 1 回を 超えます。 - イ2 回は、
見つかった 並びの 数 (i = 3 と i = 6) です。 β は 1 文字ずつの 比較なので、 一致した 文字の 数を 数えます。 - ウ3 回は、
key の 長さ 1 回分です。 完全に 一致する 並びは 2 か 所あり、 それだけで 6 回に なります。 - エ4 回は
少な すぎます。 i = 3 と i = 6 の 完全一致だけで 6 回あります。 - オ5 回は、
i = 1 の 2 回と i = 3 の 3 回まで で止めた数です。 i = 6 の 3 回が 抜けています。 - カ6 回は、
完全に 一致した 2 か所の 3 回ずつだけを 数えた数です。 i = 1 で a と b まで 一致した 2 回も β は 真に なります。 - キ7 回は、
i = 1 の 途中までの 一致を 1 回と 数えた数です。 a と b の 2 文字が 一致しているので 2 回です。 - ケ9 回は
多すぎます。 i = 1 は 3 文字目の a と c で 違うので、 真に なるのは 2 回だけです。 - コ10 回は
多すぎます。 真に なるのは i = 1 の 2 回、 i = 3 と i = 6 の 3 回ずつで 計 8 回です。
仕組み
この
回数を