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

- 1,000
- 1,500
- 3,000
- 5,500
[出典:ITパスポート試験 令和7年度 問99]
スポンサーリンク
正解
正解は「ウ」です。
解説
この問題では、与えられた2つの業務改善データに対して、プログラムが返す賞金額を求め、合計する必要があります。プログラムのロジックはネストされたif文で構成されており、まず改善額が10万円(100,000)未満かどうかを判断し、その後に短縮期間が7日未満かどうかで賞金額が決まります。
- 1件目:改善額20万円(200,000)→10万円以上、短縮期間3日→7日未満なので、賞金は2000円。
- 2件目:改善額5万円(50,000)→10万円未満、短縮期間14日→7日以上なので、賞金は1000円。
この2件の合計は、2000 + 1000 = 3000円です。したがって、正解は「ウ」です。
ア(1,000):
1件目か2件目のいずれかしか評価していない、または合計の処理を誤っていると考えられます。 イ(1,500):
500円と1000円の合計などと誤解した可能性が高いですが、20万円は100,000円以上なので2000円が正しいです。
エ(5,500):
5000円と500円を合計した誤りと思われますが、条件分岐の判断が間違っています。
難易度
本問はif文を使ったネストされた条件分岐の正確な理解と、具体的な数値を当てはめた処理結果の算出が求められます。アルゴリズム初学者にはやや複雑に感じるかもしれませんが、手順を丁寧に追えば解ける問題であるため、難易度は中程度です。
スポンサーリンク
用語補足
if文:
条件式の結果によって処理の流れを分岐させる構文です。ネスト(入れ子)して使うことで、複雑な条件を表現できます。
return文:
関数が処理を終えたときに、結果(戻り値)を返すための命令です。今回の問題では、計算した賞金額を返しています。
対策
プログラミングの基本構文である条件分岐(if-else)に慣れておくことが重要です。特にネストされたif文の処理の流れを図に描く、または実際に紙に書き出すことで理解が深まります。数値を具体的に代入し、処理の流れを追う練習をしましょう。