科目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 の公開問題。図・数式・下線などはテキストに直して掲載。解説は当サイト作成)

科目Bの解き方と全問の一覧

解説に誤りを見つけたら、解説の誤りを報告してください。

答えと解説を見る

正解:イ

覚える知識

条件分岐による三つの値の最大値判定

ある値を最大として返す条件は、その値が残りの全部より大きいこと。比べる相手を一つでも落とすと、その相手のほうが大きい場合に誤った値を返す。

この問題で必要なこと

最初の 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 を比べていない。