問題
temp変数なしのスワップ(x=10,y=5, x=x+y, y=x-y, x=x-y)の結果は何か。
選択肢
- 1x=5,y=10
- 2x=10,y=5
- 3x=15,y=10
- 4x=0,y=5
正解
1. x=5,y=10
詳しい解説を見る解説を閉じる
解説
x=10、y=5から代入を1行ずつ追う。まずx=x+yでx=10+5=15(yは5のまま)、次にy=x-yでy=15-5=10、最後にx=x-yでx=15-10=5となる。結果はx=5、y=10であり、一時変数を使わずに2つの変数の値が交換(スワップ)される。誤答のx=10,y=5は交換前の初期値のまま、x=15,y=10は2行目が終わった時点の途中経過、x=0,y=5は減算の適用を誤った値である。基本情報の科目B(アルゴリズム)では、このように変数の値を順にトレースする力が必須であり、加減算による交換のほかに排他的論理和(XOR)を3回適用しても同様のスワップができる点も知っておくと役立つ。
一問一答
科目A 180問+科目B 60問