科目B
令和6年度 基本情報技術者試験 科目B 公開問題 問1
次のプログラム中の に入れる正しい答えを,解答群の中から選べ。
関数 maximum は,異なる三つの整数を引数で受け取り,そのうちの最大値を返す。
〔プログラム〕
○整数型: maximum(整数型: x, 整数型: y, 整数型: z)
if ( )
return x
elseif (y > z)
return y
else
return z
endif
答えを選ぶ
出典:令和6年度 基本情報技術者試験 科目B 公開問題 問1(問題文は IPA の公開問題。図・数式・下線などはテキストに直して掲載。解説は当サイト作成)
解説に誤りを見つけたら、解説の誤りを報告してください。
答えと解説を見る
正解:イ
覚える知識
条件分岐による三つの値の最大値判定
ある値を最大として返す条件は、その値が残りの全部より大きいこと。比べる相手を一つでも落とすと、その相手のほうが大きい場合に誤った値を返す。
この問題で必要なこと
最初の if で return x する条件は「x が y と z の両方より大きい」でなければならない。x が最大でないときは elseif 以降で y と z を比べるので、y と z の大小関係は if の条件に入れる必要がない。よって正解は イ「x > y and x > z」。例えば x=2, y=1, z=3 なら、ア では 2 が返ってしまう。
ひっかけ
ア・エ は比べる相手が一つ足りず、残りの値のほうが大きい場合に x を返してしまう。ウ・オ は y と z の大小関係まで条件に入れてしまい、x が最大なのに x を返さない場合がある(例: x=3, y=1, z=2 で ウ は偽)。カ は x を比べていない。