問題
次の擬似言語プログラムを実行したとき、変数xとyの最終的な値はどれか。 整数型: x ← 10 整数型: y ← 5 x ← x + y y ← x - y x ← x - y
選択肢
- 1ア x=10, y=5
- 2イ x=5, y=10
- 3ウ x=15, y=10
- 4エ x=0, y=5
正解
2. イ x=5, y=10
詳しい解説を見る解説を閉じる
解説
正解はイ。これは一時変数を使わず、加減算だけで2つの変数の値を交換するテクニックである。各代入を順にトレースすると、①x←x+y=10+5=15(x=15、y=5)、②y←x-y=15-5=10(x=15、y=10)、③x←x-y=15-10=5(x=5、y=10)となる。よって最終的にx=5、y=10となり、初期値が交換されている。アは値の変化を見落とした初期状態、ウは②の時点の途中経過、エは減算の追跡を誤った値である。基本情報の科目Bでは、代入のたびに変数表を書いて値の変化を追うトレース力が問われる。代入文は「右辺を現在の変数値で評価してから左辺へ格納する」ため、直前の代入結果が次の式の計算に使われる点を確実に押さえることがポイントである。
一問一答
科目A 180問+科目B 60問