ITの基礎知識|ITパスポート・基本情報

基本情報技術者 令和6年公開問題 科目B 問1

2026.07.08

科目Bに共通する注意事項(表記ルールなど)については、下記のリンク先を参照してください。

基本情報技術者 令和6年公開問題 科目Bの注意事項


問題

次のプログラム中の空欄に入れる正しい答えを,解答群の中から選べ。

関数maximum は,異なる三つの整数を引数で受け取り,そのうちの最大値を返す。

[プログラム]

○整数型: maximum(整数型: x, 整数型: y, 整数型: z)
  if ( ____ )
    return x
  elseif (y > z)
    return y
  else
    return z
  endif

 

解答群

  • ア x > y
  • イ x > y and x > z
  • ウ x > y and y > z
  • エ x > z
  • オ x > z and z > y
  • カ z > y

Show answer

解答

解説

‘return x’ が実行されるのは「x が最大」のときでなければなりません。x が最大であるための条件は,x が y よりも z よりも大きいこと,すなわち ‘x > y and x > z’(イ)です。

各選択肢が不適切な理由を,具体的な反例で確認します(三つの値は異なる前提)。

  • ア ‘x > y’
    • (x, y, z)=(2, 1, 3) のとき条件は真になり x=2 を返しますが,最大値は z=3 です。z との比較が欠けています。
  • ウ ‘x > y and y > z’
    • x > y > z(xが最大)のときしか真になりません。(3, 1, 2) のように x が最大でも y < z だと偽になり,elseif の y > z も偽なので z=2 を返してしまい誤りです。
  • エ ‘x > z’
    • (2, 3, 1) のとき真になり x=2 を返しますが,最大値は y=3 です。y との比較が欠けています。
  • オ ‘x > z and z > y’
    • x > z > y の並びのときしか真になりません。例えば (x, y, z)=(3, 2, 1) は x が最大ですが,z > y(1 > 2)が偽なので条件全体が偽となり,elseif の y > z(2 > 1)が真で y=2 を返してしまい誤りです。
  • カ ‘z > y’
    • x の大小と無関係な条件であり,明らかに誤りです。

なお,空欄が偽だった場合の ‘elseif (y > z)’ は「x は最大でない」ことが確定した状態で評価されるため,y と z の比較だけで残り二つの大小を判定できる,という構造になっています。