次のプログラム中の [a] と [b] に入れる正しい答えの組合せを,解答群の中から選べ。…
科目B アルゴリズムとプログラミング 科目B 問1
次のプログラム中の [a] と [b] に入れる正しい答えの組合せを,解答群の中から選べ。関数function1 が受け取る引数と,関数function2 が受け取る引数とが同じとき,二つの関数は同じ値を返す。ここで,引数n と引数m は正の整数であり,引数m は引数n よりも10 以上大きい数とする。
正答 カ
正答は カ。a:i を1から3まで1ずつ増やす、b:j を tempN から始めて m を超えない範囲で4ずつ増やす、の組合せです。
【function1 の働き】
n から m までの整数を一つずつ調べ、4 の倍数の個数を数えます。
【function2 の考え方】
一つ目の for で、n 以上で最初の 4 の倍数を tempN に求め、二つ目の for で、tempN から 4 ずつ増やしながら、m 以下の4 の倍数を数えます。
n 以上で最初の 4 の倍数は、n,n+1,n+2,n+3 のどれかです。
解説の続きをみる続きを閉じる
n,n+1,n+2 を調べてどれも 4 の倍数でなければ、繰返しの3回目の最後の tempN ← tempN + 1 で tempN は n+3 になり、これは必ず 4 の倍数です。よって一つ目の for は3回で足ります(a)。
4 の倍数は 4 おきに現れるので、二つ目の for は tempN から
4 ずつ増やし、m を超えない範囲で数えます(b)。
【トレース(n=5,m=23 の例)】
function1:5〜23 の 4 の倍数は 8,12,16,20 → 4 を返す
function2:
一つ目の for(i=1〜3)
i=1 tempN=5 5 mod 4=1 → tempN←6
i=2 tempN=6 6 mod 4=2 → tempN←7
i=3 tempN=7 7 mod 4=3 → tempN←8
二つ目の for(j=8 から 4 ずつ、23 を超えない範囲)
j=8 count=1
j=12 count=2
j=16 count=3
j=20 count=4(j=24 は 23 を超えるので終了)
→ 4 を返し、function1 と一致します。
n が 4 の倍数のとき(例 n=8)は、i=1 で 8 mod 4=0 となって
繰返しを終了し、tempN=8 のまま二つ目の for に進みます。
【ほかの選択肢(n=5,m=23 で比べる。正しい値は 4)】
ア(a:1〜2、b:n から tempN ずつ) 誤り
→ tempN は 7 で止まり、j=5,12,19 の 3
イ(a:1〜2、b:tempN から m まで 1 ずつ) 誤り
→ j=7〜23 の全ての整数を数えて 17
ウ(a:1〜2、b:tempN から 4 ずつ) 誤り
→ tempN が 4 の倍数の 8 に届かず 7 のまま。
j=7,11,15,19,23 を数えて 5
エ(a:1〜3、b:n から tempN ずつ) 誤り
→ j=5,13,21 の 3。増やす幅が 4 ではなく tempN(8)になる
オ(a:1〜3、b:tempN から m まで 1 ずつ) 誤り
→ j=8〜23 の全ての整数を数えて 16
【ポイント】
a は「最初の 4 の倍数に必ず届く回数」、b は「4 の倍数だけを踏む増やし方」かどうかで見分けます。
出典:令和7年度 基本情報技術者試験 科目B 公開問題 問1(独立行政法人情報処理推進機構)出典元ページ
最終更新日
「科目B アルゴリズムとプログラミング」のほかの問題
- 2024年度(令和6年度)公開問題 科目B 問1次のプログラム中の [ ] に入れる正しい答えを,解答群の中から選べ。
- 2024年度(令和6年度)公開問題 科目B 問2次のプログラム中の [ ] に入れる正しい答えを,解答群の中から選べ。
- 2024年度(令和6年度)公開問題 科目B 問3次のプログラム中の [ ] に入れる正しい答えを,解答群の中から選べ。
- 2024年度(令和6年度)公開問題 科目B 問4次の記述中の [ ] に入れる正しい答えを,解答群の中から選べ。
- 2024年度(令和6年度)公開問題 科目B 問5次のプログラム中の [a] ~ [c] に入れる正しい答えの組合せを,解答群の中から選べ
- 2026年度(令和8年度)公開問題 科目B 問1次のプログラム中の [ ] に入れる正しい答えを,解答群の中から選べ。
スポンサーリンク





