修了試験 2020-06-14実施分 基本情報技術者試験 問10
長さm,nの文字列をそれぞれ格納した配列X,Yがある。 図は,配列Xに格納した文字列の後ろに,配列Yに格納した文字列を連結したものを,配列Zに格納するアルゴリズムを表す流れ図である。 図中のa,bに入れる処理として,適切なものはどれか。 ここで,1文字が一つの配列要素に格納されるものとする。

正答1
解説
正解は1です。 2つの配列を連結する流れ図の空欄を埋める問題です。 図では、ループ1が k を1から m まで1ずつ増やして a を実行し、続くループ2が k を1から n まで1ずつ増やして b を実行します。 配列Zには、先にXのm文字、その後ろにYのn文字を格納します。 【選択肢別解説】 1:○ ループ1で Z(k)←X(k) とすると、Xのm文字がZ(1)からZ(m)に入ります。 ループ2で Z(m+k)←Y(k) とすると、Yのn文字がZ(m+1)からZ(m+n)に入ります。 Xの後ろにYを連結できるので適切です。 2:× b を Z(n+k)←Y(k) とすると、Yの格納位置がZ(n+1)から始まります。 mとnが異なると、Xの文字を上書きしたり隙間ができたりするので誤りです。 正しくは Z(m+k) です。 3:× ループ1は k が1から m までなので、長さnのYを読む処理は合いません。 また、Xの後ろにYを連結するという順序とも逆です。 4:× ループ1でYを、ループ2でXを格納しており、連結の順序が逆です。 繰返し回数も配列の長さと一致しません。 【ポイント】 ループの終値(ここでは m と n)が、そのループで扱う配列の長さと一致しているかを最初に確認すると、候補を素早く絞れます。 連結では、2つ目の配列の格納位置を「1つ目の長さ+k」とずらすのが基本です。まとめて解く
修了試験 2020-06-14実施分を通しで解く(80問)→