修了試験 2012-07-22実施分 基本情報技術者試験 問7
次のような一連の代入文がある。 x+y→x x-y→y x-y→x x,yの初期値をそれぞれA,Bとするとき,最後の代入文の実行が終了した時点におけるxとyの値の適切な組合せはどれか。
正答2
解説
正解は2です。 3つの代入文を、変数の値を書き出しながら順にたどります。 各代入文は、矢印の左にある式の値を、右にある変数に代入するという意味です。 【処理の流れ】 初期値はx=A、y=Bです。 1つ目の代入でx+yをxに入れるので、x=A+B、y=Bになります。 2つ目の代入でx-yをyに入れるので、y=(A+B)-B=Aになります。 3つ目の代入でx-yをxに入れるので、x=(A+B)-A=Bになります。 最終的にx=B、y=Aとなり、2つの値が入れ替わります。 【選択肢別解説】 1:× xとyが初期値のまま残ることはありません。 3つの代入を終えると、xとyの値は入れ替わっています。 2:○ 上の手順のとおり、x=B、y=Aになります。 作業用の変数を使わずに2つの値を交換する手順です。 3:× x=2B、y=A-Bは、どの段階の値とも一致しません。 2つ目の代入でyはA-BではなくAになり、3つ目の代入でxはBになります。 4:× xとyがともにA-Bになることはありません。 正しくはx=B、y=Aです。 【ポイント】 代入文の問題は、1行ごとに全変数の値を書き出すと確実に解けます。 なお、この交換手順は、x+yが表現できる範囲を超えるとあふれ(オーバフロー)が起きる点に注意が必要です。まとめて解く
修了試験 2012-07-22実施分を通しで解く(80問)→