基本情報技術者令和6年 [科目B]問2

問2

次のプログラム中の に入れる正しい答えを,解答群の中から選べ。

 関数 convDecimal は,引数として与えられた,"0"と"1"だけから成る,1文字以上の文字列を,符号なしの2進数と解釈したときの整数値を返す。例えば,引数として"10010"を与えると18が返る。
 関数 convDecimal が利用する関数 int は,引数で与えられた文字が"0"なら整数値0を返し,"1"なら整数値1を返す。

〔プログラム〕
b02_1.png/image-size:314×139
  • 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文の繰返し処理の内容に注目します。
  • ●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となります。
したがって「エ」の式が適切です。
© 2010-2024 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop