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

正答1
解説
正解は1です。 流れ図には、kを1からmまで1ずつ増やすループ1と、kを1からnまで1ずつ増やすループ2があります。 ループ1の中に処理a、ループ2の中に処理bがあります。 まずXのm文字をZの先頭に入れ、続けてYのn文字をその後ろに入れれば、連結が完成します。 【選択肢別解説】 1:○ aでX(k)をZ(k)に入れると、Z(1)〜Z(m)にXの文字が入ります。 bでY(k)をZ(m+k)に入れると、Z(m+1)〜Z(m+n)にYの文字が続きます。 これで長さmの文字列の後ろに長さnの文字列が連結されます。 2:× bでY(k)をZ(n+k)に入れると、Yの格納開始位置がZ(n+1)になります。 mとnが異なると、隙間ができたりXの文字を上書きしたりしてしまいます。 3:× aでY(k)を扱っていますが、ループ1はkが1からmまでで、Yの長さnとは合いません。 また、Yが先頭に来てしまい、Xの後ろにYを連結する順序と逆になります。 4:× 3と同様に、ループ1でYを、ループ2でXを扱っていて、ループの回数と文字列の長さが合いません。 連結の順序も逆になります。 【ポイント】 配列の連結では、後ろに付ける文字列の格納位置を「前の文字列の長さ+k」にします。 ループの終値(mやn)と、扱う配列の長さが対応しているかを確かめると判断しやすくなります。まとめて解く
修了試験 2013-01-27実施分を通しで解く(80問)→