令和6年試験問題 [科目B]問2
問2解説へ
次のプログラム中の に入れる正しい答えを,解答群の中から選べ。
関数 convDecimal は,引数として与えられた,"0"と"1"だけから成る,1文字以上の文字列を,符号なしの2進数と解釈したときの整数値を返す。例えば,引数として"10010"を与えると18が返る。
関数 convDecimal が利用する関数 int は,引数で与えられた文字が"0"なら整数値0を返し,"1"なら整数値1を返す。
〔プログラム〕
関数 convDecimal は,引数として与えられた,"0"と"1"だけから成る,1文字以上の文字列を,符号なしの2進数と解釈したときの整数値を返す。例えば,引数として"10010"を与えると18が返る。
関数 convDecimal が利用する関数 int は,引数で与えられた文字が"0"なら整数値0を返し,"1"なら整数値1を返す。
〔プログラム〕
- result + int(binary の (length - i + 1)文字目の文字)
- result + int(binary の i文字目の文字)
- result × 2 + int(binary の (length - i + 1)文字目の文字)
- result × 2 + int(binary の i文字目の文字)
正解 エ問題へ
分野:アルゴリズムとプログラミング
カテゴリ:プログラムの基本要素
カテゴリ:プログラムの基本要素
広告
解説
引数 binary に"10010"を与えたとき、18が返るかどうかをトレースしていきます。別の値で検証しても問題ありません。
result ← 0
length ← 5
ここまでの処理は共通なので、for文の繰返し処理の内容に注目します。
result ← 0
length ← 5
ここまでの処理は共通なので、for文の繰返し処理の内容に注目します。
- ●iを1から5まで繰り返す
binary の(5 - 1 + 1 = 5)文字目は"0"
result ← result + 0 //result = 0
binary の(5 - 2 + 1 = 4)文字目は"1"
result ← result + 1 //result = 1
以降、3文字目、2文字目、1文字目と同じ処理です。"1"の分だけ+1するだけなので、result の値は最終的に2となります。 - ●iを1から5まで繰り返す
binary の(i = 1)文字目は"1"
result ← result + 1 //result = 1
binary の(i = 2)文字目は"0"
result ← result + 0 //result = 1
以降、3文字目、4文字目、5文字目と同じ処理です。"1"の分だけ+1するだけなので、result の値は最終的に2となります。 - ●iを1から5まで繰り返す
binary の(5 - 1 + 1 = 5)文字目は"0"
result ← result × 2 + 0 //result = 0
binary の(5 - 2 + 1 = 4)文字目は"1"
result ← result × 2 + 1 //result = 1
binary の(5 - 3 + 1 = 3)文字目は"0"
result ← result × 2 + 0 //result = 2
binary の(5 - 4 + 1 = 2)文字目は"0"
result ← result × 2 + 0 //result = 4
binary の(5 - 5 + 1 = 1)文字目は"1"
result ← result × 2 + 1 //result = 9
result の値は最終的に9となります。 - ●iを1から5まで繰り返す
binary の(i = 1)文字目は"1"
result ← result × 2 + 1 //result = 1
binary の(i = 2)文字目は"0"
result ← result × 2 + 0 //result = 2
binary の(i = 3)文字目は"0"
result ← result × 2 + 0 //result = 4
binary の(i = 4)文字目は"1"
result ← result × 2 + 1 //result = 9
binary の(i = 5)文字目は"0"
result ← result × 2 + 0 //result = 18
result の値は最終的に18となります。
広告