基本情報技術者試験 問題集

基本情報技術者試験(FE)科目A・科目B 試験対策公式シラバス Ver.9.2(2026年1月8日掲載)・試験要綱 Ver.5.6 準拠

基本情報技術者試験の日本語問題集。全180問に解説つき。

基本情報技術者試験 無料問題 8 / 10 ・ 分野4: 科目B アルゴリズムとプログラミング分野

関数 search は、整数型の配列 a の要素番号 1〜n の中から key と等しい要素を先頭から探し、最初に見つかった要素番号を返す。見つからないときは -1 を返す。a の要素数は n + 1 で、a[n + 1] は番兵を置くために空けてある。プログラム中の〔a〕に入れる正しい答えを、解答群の中から選べ。 注記: 配列の要素番号は1から始まる。 〔プログラム〕 ○整数型: search(整数型の配列: a, 整数型: n, 整数型: key) 整数型: i ← 1 a[n + 1] ← key while (a[i] ≠ key) i ← i + 1 endwhile if (〔a〕) return i endif return -1

  1. i = n + 1
  2. a[i] = key
  3. i < n
  4. i ≦ n
正解と解説を見る

正解: D

正解の理由
番兵として a[n + 1] に key を置いているので、while は必ず止まる。止まった位置 i が 1〜n の範囲なら本物の要素で見つかったことになり、n + 1 なら番兵で止まった=見つからなかったことになる。したがって〔a〕は「i ≦ n」である。a = {4, 8, 2, 0}、n = 3 のとき、key = 2 では i = 3 で止まり 3 ≦ 3 なので 3 を返す。key = 5 では番兵の a[4] で止まり i = 4 なので -1 を返す。

違う選択肢
「i < n」… 等号を落としている。key が要素番号 n にあるとき(key = 2 で i = 3)も -1 を返してしまう。
「i = n + 1」… 真偽が逆である。番兵で止まった i = n + 1 のときに i を返すので、key = 5 で 4 を返し、見つかった key = 2 では -1 を返す。
「a[i] = key」… 番兵を置いた後は、止まった位置では常に a[i] = key が成り立つ。見つからないときも番兵の位置 n + 1 を返してしまう。

押さえどころ
番兵は「繰返しの中で i ≦ n を毎回調べずに済ませる」ための工夫で、その代わりに止まった位置が番兵かどうかを最後に1回だけ調べる。

基本情報技術者試験の演習アプリ(無料10問・全問は解錠で)へ

問題集(note)を見る