プログラミングの基礎(擬似言語のトレース)

÷ は除算で、整数型の変数(引数を含む)に代入するときは小数点以下を切り捨てる。次の関数 toBin を toBin(12) として呼び出したときの戻り値はどれか。

○整数型: toBin(整数型: x)
  整数型: y ← 0, p ← 1
  while (x > 0)
    y ← y + (x mod 2) × p
    p ← p × 10
    x ← x ÷ 2
  endwhile
  return y
  1. A11
  2. B100
  3. C1100
答えと解説を見る

正解:C. 1100

x mod 2 は2進数の一の位、x ← x ÷ 2 は2進数で1桁右へずらす操作です。x は 12、6、3、1、0 と変わり、下の桁から 0、0、1、1 が得られます。p は 1、10、100、1000 と10倍ずつ増えるので、y = 0 × 1 + 0 × 10 + 1 × 100 + 1 × 1000 = 1100 になります。12 を2進数で表した各桁を、10進数の各桁として並べた値です。

  • A. y ← y × 10 + x mod 2 のように、得られた桁を順に上へ積んだ場合の値で、桁の並びが逆(0011)になります。
  • B. while (x > 1) として、最上位の1を加える前に止めた場合の値です。
  • C. 正しい。12 は2進数で 1100 です。
この分野を解く 分野ページへ

関連する計算ツール

プログラミングの基礎(擬似言語のトレース)の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

プログラミングの基礎(擬似言語のトレース)のほかの問題

  1. 2つの整数 a、b を引き算で等しくしていく次のプログラムを実行した後の k の値はどれか。
  2. 次の関数 isLeap は、西暦 y 年がうるう年なら true を返す。and は or より先に計算する。isLeap(y) が true を返す y はどれか。
  3. ÷ は除算で、整数型の変数(引数を含む)に代入するときは小数点以下を切り捨てる。次の関数 pow を pow(2, 10) として呼び出したとき、pow が呼ばれる回数(最初の呼出しを含む)はどれか。
  4. 次の関数 s を s(7) として呼び出したときの戻り値はどれか。
  5. 次の手続 p を p(3) として呼び出したとき、出力される値の並びはどれか。