問題
テクノロジ系
問96 関数 calcX と関数 calcY は,引数 inData を用いて計算を行い,その結果を戻り値とする。関数 calcX を calcX(1) として呼び出すと,関数 calcX の変数 num の値が,1→3→7→13と変化し,戻り値は13となった。関数 calcY を calcY(1) として呼び出すと,関数 calcY の変数 num の値が,1→5→13→25と変化し,戻り値は25となった。プログラム中のa,bに入れる字句の適切な組合せはどれか。
選択肢
- ア
- イ
- ウ
- エ
解説
正解:エ
概要
for文の繰返しの中で変数numを更新する処理について、途中の値の変化から式aとループ条件bを特定する問題です。
正解の理由
calcX(1)でi=1,2,3のときにnumが1→3→7→13となるには、更新式はnum←num+2×iでないと一致しません。calcY(1)で1→5→13→25となるには、iが2,4,6と変化する必要があるため、bは「iを2から6まで2ずつ増やす」となります。
各選択肢の解説
ア(×): aが2×num+iだとcalcXでi=2のときに3→8となり、指定の3→7に一致しないため誤りです。
イ(×): aが2×num+iの時点でcalcXの変化に合わず誤りで、さらにbの条件だけ合っても全体として正しくなりません。
ウ(×): aはnum+2×iで合いますが、bが「1から7まで3ずつ」だとiが1,4,7となり、calcYの1→5→13→25を作れないため誤りです。
エ(〇): aをnum+2×i、bを「iを2から6まで2ずつ増やす」とすると、calcXは1→3→7→13、calcYは1→5→13→25となり条件を満たします。
ポイント
繰返し処理は「次の値=前の値に何を足す(掛ける)か」を差分で確認すると式を特定しやすいです。