サンプル問題 科目B 問1

サンプル問題 科目B 問1

科目Bも、たまにはやってみます。まずは問1から。

問題

次の記述中の □ に入れる正しい答えを,解答群の中から選べ。 
プログラムを実行すると, □ と出力される。 

出典:基本情報技術者試験 科目B 試験サンプル問題

どうでもいい思い出

遠い昔、こういうプログラムを作った記憶があります。次のように変数の値を一つずつ隣に移したいと思ったのでした。残念ながら、意図どおりには動きませんでした。

まあ、この設問がこういうことをしたかったのかどうかは、わかりませんが。

プログラムを実行したときの動作

こういう時は、CPUのつもりになって一つずつ実行するのが理解を深めるのに重要だと思います。簡単なプログラムでも思い込みが強いと原因に気づかないこともありますし、込み入ったプログラムになるとなおさらです。

問題のプログラムを実行した時、変数の値はどうなるかまとめました。赤文字になっているところは、値が変化したところです。

これを見ると、xの値が1だった、という情報が#4で失われています。それが原因で、zの値が最終的に1になっていません。

変数x, y, zの値を入れ替えるのであれば、#4の前にxの値を別の変数に退避しておいて、#6では待避した変数からzに代入すべきでした。

回答

問題は変数y, zの値をコンマ区切りで出力する、ということなので、#6の値から3,2が出力されるはずです。つまり答えはカです。

ところで、科目Bは回答が四択ではないんですね。