アルゴリズムとプログラミング
基本情報技術者試験 科目A免除 修了試験 20200614 実施分 問10
長さ m,n の文字列をそれぞれ格納した配列 X,Y がある。図は,配列 X に格納した文字列の後ろに,配列 Y に格納した文字列を連結したものを,配列 Z に格納するアルゴリズムを表す流れ図である。図中の a,b に入れる処理として,適切なものはどれか。ここで,1 文字が一つの配列要素に格納されるものとする。
流れ図: 開始 → ループ1(k : 1, 1, m)→ 処理 a → ループ1 終端 → ループ2(k : 1, 1, n)→ 処理 b → ループ2 終端 → 終了。
(注)ループ端の繰返し指定は,変数名:初期値,増分,終値 を示す。
選択肢は a,b の表(ア〜エ)として提示。
- ア a: Z(k) ← X(k),b: Z(m + k) ← Y(k)
- イ a: Z(k) ← X(k),b: Z(n + k) ← Y(k)
- ウ a: Z(k) ← Y(k),b: Z(m + k) ← X(k)
- エ a: Z(k) ← Y(k),b: Z(n + k) ← X(k)
出典:基本情報技術者試験 科目A免除 修了試験 20200614 実施分 問10
答えと解説を見る
正解:ア
覚える知識
配列の連結処理の流れ図読解
連結では、後ろの配列の要素を前の配列の長さ分だけずらした位置に格納する。
この問題で必要なこと
Xのm要素を先頭からZにコピーし、続けてYのn要素をZ(m+k)に格納する。
ひっかけ
オフセットにnを使う誤りや、XとYの取り違え。
この知識の出題:本試験系 1 回・免除試験 5 回(公開問題での観測値)