次の記述中の [ ] に入れる正しい答えを,解答群の中から選べ。…
科目B アルゴリズムとプログラミング 科目B 問4
次の記述中の [ ] に入れる正しい答えを,解答群の中から選べ。ここで,配列の要素番号は1 から始まる。関数search は,二つの文字型の配列を,それぞれ引数data 及びkey で受け取り,data から,key の要素の並びと同じ並びを全て探し,その先頭の要素番号を全て格納した配列を返す。見つからなければ,要素数0 の配列を返す。関数search をsearch({"a", "b", "a", "b", "c", "a", "b", "c"}, {"a", "b","c"}) として呼び出すと,/*** β ***/の行の条件式が真となる回数は [ ]回である。
正答 ク
正答は ク。β の条件式が真になるのは 8 回です。
【プログラムの働き】
data の i 番目から key の長さの分を、key の先頭から1文字ずつ
比べます(β の行)。一致すれば次の文字へ進み、最後の文字
(j=lenKey)まで一致したら i を result に追加します。
一致しない文字が出たら、α の繰返しを終えて次の i に進みます。
【トレース】
data={a, b, a, b, c, a, b, c}(要素番号 1〜8)、key={a, b, c}
解説の続きをみる続きを閉じる
lenData=8、lenKey=3 なので、i は 1 から 8 - 3 + 1=6 まで
i=1 data[1]=a 真、data[2]=b 真、data[3]=a≠c 偽で終了
→ 真 2 回
i=2 data[2]=b≠a 偽で終了 → 真 0 回
i=3 data[3]=a 真、data[4]=b 真、data[5]=c 真
→ j=3 で result に 3 を追加 → 真 3 回
i=4 data[4]=b≠a 偽で終了 → 真 0 回
i=5 data[5]=c≠a 偽で終了 → 真 0 回
i=6 data[6]=a 真、data[7]=b 真、data[8]=c 真
→ j=3 で result に 6 を追加 → 真 3 回
合計 2 + 0 + 3 + 0 + 0 + 3 = 8(回)
関数の戻り値は {3, 6} です。
【ほかの選択肢】
カ 6 誤り
→ 一致が見つかった i=3,6 の 3 回ずつだけを数えた値。
i=1 でも、3文字目で食い違うまでに 2 回真になっている
ア〜オ、キ、ケ、コ 誤り
→ トレースの結果に合わない。偽になって α の繰返しを抜けた
回(4 回)は数えません。比較した回数の合計(真と偽)は12 回です
【ポイント】
途中まで一致して最後に食い違った場合も、そこまでの比較は真として数えます。i ごとに、どの j で偽になるかを書き出すと数え落としを防げます。
出典:令和7年度 基本情報技術者試験 科目B 公開問題 問4(独立行政法人情報処理推進機構)出典元ページ
最終更新日
「科目B アルゴリズムとプログラミング」のほかの問題
- 2024年度(令和6年度)公開問題 科目B 問4次の記述中の [ ] に入れる正しい答えを,解答群の中から選べ。
- 2024年度(令和6年度)公開問題 科目B 問5次のプログラム中の [a] ~ [c] に入れる正しい答えの組合せを,解答群の中から選べ
- 2026年度(令和8年度)公開問題 科目B 問1次のプログラム中の [ ] に入れる正しい答えを,解答群の中から選べ。
- 2026年度(令和8年度)公開問題 科目B 問2次のプログラム中の [ ] に入れる正しい答えを,解答群の中から選べ。
- 2026年度(令和8年度)公開問題 科目B 問3次のプログラム中の [ ] に入れる正しい答えを,解答群の中から選べ。
- 2026年度(令和8年度)公開問題 科目B 問4次のプログラム中の [a] と [b] に入れる正しい答えの組合せを,解答群の中から選べ
スポンサーリンク





