問題
関数 function1 が受け取る引数と、関数 function2 が受け取る引数とが同じとき、二つの関数は同じ値を返す。ここで、引数 n と引数 m は正の整数であり、引数 m は引数 n よりも 10 以上大きい数とする。次のプログラム(図)中の a と b に入れる正しい答えの組合せを、解答群の中から選べ。

選択肢
- 1a: iを1から2まで1ずつ増やす / b: jをnから始めてmを超えない範囲でtempNずつ増やす
- 2a: iを1から2まで1ずつ増やす / b: jをtempNからmまで1ずつ増やす
- 3a: iを1から2まで1ずつ増やす / b: jをtempNから始めてmを超えない範囲で4ずつ増やす
- 4a: iを1から3まで1ずつ増やす / b: jをnから始めてmを超えない範囲でtempNずつ増やす
- 5a: iを1から3まで1ずつ増やす / b: jをtempNからmまで1ずつ増やす
- 6a: iを1から3まで1ずつ増やす / b: jをtempNから始めてmを超えない範囲で4ずつ増やす
正解
6. a: iを1から3まで1ずつ増やす / b: jをtempNから始めてmを超えない範囲で4ずつ増やす
詳しい解説を見る解説を閉じる
解説
function1 は n から m の範囲で 4 の倍数の個数を数える。function2 は同じ結果を、まず n 以上で最初の 4 の倍数を求め(前半ループ)、そこから m まで 4 ずつ進めて個数を数える(後半ループ)という二段構えで実現する。前半は tempN を n から増やし 4 の倍数になったら打ち切るが、連続する 4 数 n, n+1, n+2, n+3 のいずれかは必ず 4 の倍数なので、n, n+1, n+2 を調べる 3 回の繰返し(最後の増加で tempN は n+3 に達する)で必ず最初の 4 の倍数に到達する。よって a は「iを1から3まで1ずつ増やす」。後半は最初の 4 の倍数 tempN から m を超えない範囲で 4 ずつ数えればよいので b は「jをtempNから始めてmを超えない範囲で4ずつ増やす」。したがって「カ」が正しい。(出典: 令和7年度 基本情報技術者試験 科目B 問1)
一問一答
科目A 180問+科目B 60問