問題
関数 search は、二つの文字型の配列をそれぞれ引数 data 及び key で受け取り、data から key の要素の並びと同じ並びを全て探し、その先頭の要素番号を全て格納した配列を返す。見つからなければ要素数 0 の配列を返す。search を search({"a", "b", "a", "b", "c", "a", "b", "c"}, {"a", "b", "c"}) として呼び出すと、図中の /*** β ***/ の行の条件式が真となる回数は何回か。正しい答えを解答群の中から選べ。ここで、配列の要素番号は 1 から始まる。

選択肢
- 11
- 22
- 33
- 44
- 55
- 66
- 77
- 88
- 99
- 1010
正解
8. 8
詳しい解説を見る解説を閉じる
解説
β の条件は data[i + j - 1] が key[j] と等しいかの判定で、不一致になると内側ループを打ち切る。data は {a,b,a,b,c,a,b,c}、key は {a,b,c}。外側 i は 1〜6。i=1: a=a(真)、b=b(真)、data[3]=a≠c(偽)→真は 2 回。i=2: data[2]=b≠a(偽)→真 0 回。i=3: a=a、b=b、c=c が全て一致→真 3 回(一致を検出)。i=4: data[4]=b≠a(偽)→真 0 回。i=5: data[5]=c≠a(偽)→真 0 回。i=6: a=a、b=b、c=c が一致→真 3 回。合計すると 2+0+3+0+0+3=8 回となる。したがって「ク」(8 回)が正しい。(出典: 令和7年度 基本情報技術者試験 科目B 問4)
一問一答
科目A 180問+科目B 60問