問99 条件分岐で賞金額を出す

ITパスポート 令和7年度 公開問題、全100問のうちの問99。

出典:令和7年度 ITパスポート試験 公開問題 問99(プログラムは原本の画像を文字に書き起こした。引数の 2 行目は、狭い画面に収まるよう字下げを詰めた)

関数 calculateAmountOfPrize は,業務改善の効果における改善額と短縮期間を,それぞれ improvement と period で受け取り,賞金額を戻り値とする。改善額が2⁠0万円で短縮期間が3日の業務改善と,改善額が5万円で短縮期間が1⁠4日の業務改善があった。この二つの賞金額の合計は何円か。ここで,改善額と短縮期間の値はそれぞれ0以上とする。

プログラム
○整数型: calculateAmountOfPrize(整数型: improvement, // 改善額(円)
整数型: period) // 短縮期間(日)
整数型: prize // 賞金額(円)
if (improvement が 100000 より小さい)
if (period が 7 より小さい)
prize ← 500
else
prize ← 1000
endif
else
if (period が 7 より小さい)
prize ← 2000
else
prize ← 5000
endif
endif
return prize
  1. ア1,0⁠0⁠0
  2. イ1,5⁠0⁠0
  3. ウ3,0⁠0⁠0
  4. エ5,5⁠0⁠0
答えと解説を開く

正解はウです。

この関数は、まず改善額が 1⁠0⁠0,0⁠0⁠0円より小さいかで分かれ、次に短縮期間が 7 日より小さいかで分かれます。組合せで賞金額は 4 通りです。1 つ目の改善は、改善額が 2⁠0⁠0,0⁠0⁠0円です。1⁠0⁠0,0⁠0⁠0 より小さくないので、else の側へ進みます。短縮期間は 3 日で 7 より小さいので、賞金額は 2,0⁠0⁠0円です。2 つ目の改善は、改善額が 5⁠0,0⁠0⁠0円です。1⁠0⁠0,0⁠0⁠0 より小さいので、最初の側へ進みます。短縮期間は 1⁠4 日で 7 より小さくないので、else の側へ進み、賞金額は 1,0⁠0⁠0円です。合計は 2,0⁠0⁠0+1,0⁠0⁠0=3,0⁠0⁠0円です。だから正解はウです。

ほかの選択肢が違う理由

  • ア1,0⁠0⁠0円は、2 つ目の改善の賞金額だけです。1 つ目の改善の 2,0⁠0⁠0円を足していません。
  • イ1,5⁠0⁠0円は、5⁠0⁠0円と 1,0⁠0⁠0円の合計です。1 つ目の改善は改善額が 1⁠0⁠0,0⁠0⁠0円以上なので、5⁠0⁠0円ではなく 2,0⁠0⁠0円になります。
  • エ5,5⁠0⁠0円は、5⁠0⁠0円と 5,0⁠0⁠0円の合計です。2 つの改善の条件を取り違えています。

仕組み

if の中に if がある入れ子の分岐は、外側の条件から順に 1 つずつ判定します。2 つの条件の組合せで 4 つの結果に分かれます。

「より小さい」はその値を含みません。境目の値 (1⁠0⁠0,0⁠0⁠0 や 7) がどちらに入るかを、問題を解く前に確かめておくと間違えにくくなります。

この問に出る言葉