問題
関数 merge は、昇順に整列された整数型の配列 data1 及び data2 を受け取り、これらを併合してできる昇順に整列された配列を返す。配列の要素番号は 1 から始まる。図のプログラムを merge({2, 3}, {1, 4}) として呼び出したとき、/*** α ***/ の行は何回実行されるか。正しい答えを解答群の中から選べ。

選択肢
- 1実行されない
- 21 回実行される
- 32 回実行される
- 43 回実行される
正解
2. 1 回実行される
詳しい解説を見る解説を閉じる
解説
data1 = {2, 3}(n1=2)、data2 = {1, 4}(n2=2)で追跡する。第 1 の while(i≦2 かつ j≦2)では、(1) data1[1]=2 と data2[1]=1 を比べ 2>1 なので else 側で work に 1 を入れ j=2、(2) data1[1]=2 と data2[2]=4 で 2≦4 なので work に 2 を入れ i=2、(3) data1[2]=3 と data2[2]=4 で 3≦4 なので work に 3 を入れ i=3 となり、i=3>n1 で第 1 の while を抜ける。第 2 の while(i≦n1)は i=3 で条件偽のため実行されない。第 3 の while(j≦n2)は j=2≦2 で真となり、α の行 work[k]←data2[j] が 1 回実行されて 4 を格納し j=3 で終了する。したがって α は 1 回実行されるので、イが正解。(出典: 令和6年度 基本情報技術者試験 科目B 問4)
一問一答
科目A 180問+科目B 60問