次のプログラム中の [ ] に入れる正しい答えを,解答群の中から選べ。…
科目B アルゴリズムとプログラミング 科目B 問2
次のプログラム中の [ ] に入れる正しい答えを,解答群の中から選べ。関数convDecimal は,引数として与えられた,“0”と“1”だけから成る,1 文字以上の文字列を,符号なしの2 進数と解釈したときの整数値を返す。例えば,引数として“10010”を与えると18 が返る。関数convDecimal が利用する関数int は,引数で与えられた文字が“0”なら整数値0 を返し,“1”なら整数値1 を返す。
正答 エ
正答は エ。空欄には「result × 2 + int(binary の i 文字目の文字)」が入ります。
2 進数の文字列を左(上位の桁)から 1 文字ずつ読むとき、それまでの値 result を 2 倍して(1 桁左へずらして)、読んだ桁の値を足すと、最後に全体の値が得られます。for は i を 1 から length まで増やすので、binary の i 文字目は、左から順の文字です。
【トレース(エを入れ、binary=“10010”、length=5)】
i=1:1 文字目“1” → result = 0 × 2 + 1 = 1
解説の続きをみる続きを閉じる
i=2:2 文字目“0” → result = 1 × 2 + 0 = 2
i=3:3 文字目“0” → result = 2 × 2 + 0 = 4
i=4:4 文字目“1” → result = 4 × 2 + 1 = 9
i=5:5 文字目“0” → result = 9 × 2 + 0 = 18
問題文の例どおり 18 が返ります。
【ほかの選択肢】(“10010”で試した結果)
ア result + int(binary の (length - i + 1) 文字目の文字) 誤り
→ 各桁の数字を足すだけなので、1 の個数の 2 が返る
イ result + int(binary の i 文字目の文字) 誤り
→ アと同じく、桁の重みを付けずに足すので 2 が返る
ウ result × 2 + int(binary の (length - i + 1) 文字目の文字)
誤り→ 右(下位の桁)から読むことになり、“01001”を左から
読んだのと同じになる
0 → 1 → 2 → 4 → 9 となり、9 が返る
【覚え方】
左から読むときは「それまでの値 × 基数 + 次の桁」です。
10 進数の“123”を ((1 × 10) + 2) × 10 + 3 と計算するのと同じ考え方です。
出典:令和6年度 基本情報技術者試験 科目B 公開問題 問2(独立行政法人情報処理推進機構)出典元ページ
最終更新日
「科目B アルゴリズムとプログラミング」のほかの問題
- 2025年度(令和7年度)公開問題 科目B 問2次のプログラム中の [ ] に入れる正しい答えを,解答群の中から選べ。
- 2025年度(令和7年度)公開問題 科目B 問3次のプログラム中の [a] と [b] に入れる正しい答えの組合せを,解答群の中から選べ
- 2025年度(令和7年度)公開問題 科目B 問4次の記述中の [ ] に入れる正しい答えを,解答群の中から選べ。
- 2025年度(令和7年度)公開問題 科目B 問5次の記述中の [a] と [b] に入れる正しい答えの組合せを,解答群の中から選べ。
- 2026年度(令和8年度)公開問題 科目B 問1次のプログラム中の [ ] に入れる正しい答えを,解答群の中から選べ。
- 2026年度(令和8年度)公開問題 科目B 問2次のプログラム中の [ ] に入れる正しい答えを,解答群の中から選べ。
スポンサーリンク





