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

正答1
解説
正解は1です。 図の流れ図には、kを1からmまで1ずつ増やすループ1と、kを1からnまで1ずつ増やすループ2が順に並んでいます。 ループ1の中に処理a、ループ2の中に処理bがあります。 Xの文字列の後ろにYの文字列を連結するので、aでXを、bでYをZへ転記します。 【処理の流れ】 ループ1では、k=1のときZ(1)←X(1)、k=mのときZ(m)←X(m)となり、Xのm文字がZの1〜m番目に入ります。 ループ2では、Yの1文字目をZのm+1番目に入れる必要があります。 k=1のときZ(m+1)←Y(1)、k=nのときZ(m+n)←Y(n)となるよう、bはZ(m+k)←Y(k)とします。 【選択肢別解説】 1:○ aでXの1〜m文字目をZの1〜m番目に入れ、bでYをZのm+1番目以降に続けて入れます。 Xの後ろにYが連結されるので、題意に合います。 2:× bのZ(n+k)←Y(k)では、Yの格納開始位置がn+1番目になります。 mとnが異なると、Xとの間にすき間ができたりXを上書きしたりするので誤りです。 3:× aでYを先に転記しており、Xの後ろにYを連結するという題意に反します。 また、ループ1はm回しか回らないので、長さnのYとも回数が合いません。 4:× aでY、bでXを転記しており、Yの後ろにXを連結する逆の順序になります。 ループの回数も、それぞれの配列の長さと合いません。 【ポイント】 連結では、後半の配列の格納開始位置を「前半の長さ+1」にずらすのがポイントです。 ループの終値(m、n)と、コピー元の配列の長さが対応しているかも確認しましょう。まとめて解く
修了試験 2018-12-09実施分を通しで解く(80問)→