メインコンテンツへスキップ
基本情報技術者令和6年度 CBT科目B問 2

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

難度標準

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

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

関数 convDecimal が利用する関数 int は,引数で与えられた文字が“0”なら整数値0を返し、“1”なら整数値1を返す。

[プログラム]

○整数型:convDecimal(文字列型:binary)

整数型:i, length, result ← 0

length ← binaryの文字数

for(iを1から length まで 1 ずつ増やす)

result ←

endfor

return result

選択肢

解説

結論 → 詳細 → 補足 の 3 層構成

展開
結論Layer 1

正解はエです。

詳細Layer 2
展開

この問題は、2進数文字列を10進数整数に変換するアルゴリズムを問うものです。2進数では、各桁の重みは左に行くほど2倍になります。例えば、2進数101は、右から順に1×2⁰ + 0×2¹ + 1×2² = 1 + 0 + 4 = 5となります。プログラムでは、forループで文字列を左から右へ処理しています。i番目の文字(1から始まる)を取り出し、それをint関数で整数値(0または1)に変換します。この整数値を、現在のresultに2を掛けたものに加算することで、次の桁の重みを考慮した計算を行います。したがって、result × 2 + int(binary の i文字目の文字)が正しい計算式となります。アとイは、桁の重みを考慮せずに単純加算しているため誤りです。ウは、桁の重みを考慮していますが、文字列の右端の文字から処理しており、プログラムのiが1からlengthまで増加するループ処理と整合しません。

この解説は?
AI生成

解説は公式の問題文・公式解答を基に作成しています。 事実誤認・選択肢の取り違え・最新法令の反映漏れ等を含む可能性があるため、 重要な判断は必ずリンク先の公式資料でご確認ください。

最終更新:

検証プロセス・誤り報告フローは 運営透明性レポートで公開しています。

分野「アルゴリズムとプログラミング」の学習ポイント

この問題の理解を「分野全体の力」に広げるための足がかり

何が問われるか
計算量(O 記法)・基本データ構造・典型アルゴリズム(探索・整列)・再帰の挙動を読む力。
学習の進め方
擬似コードを実際にトレースして変数の遷移を表に書き出す習慣を付ける。スタック/キュー/木の図示が定着の鍵。
関連キーワード
計算量二分探索クイックソート再帰スタックキュー木構造
この分野の問題をもっと解く
AI コパイロット

この問題を AI と深掘りする

用語解説・選択肢分析・類題生成をその場で対話。クイズモードでは解答→解説がゼロ遷移。

クイズモードで開く

関連する問題

アルゴリズムとプログラミング の他の問題

他年度の「アルゴリズムとプログラミング」問題

基本情報技術者 の同じ分野を年度をまたいで演習する

基本情報技術者 の学習ガイド