LONGEPASS
數位電子/程式語言/Q55
中等
正確率 -
Q55.

執行下列C++語言程式,其輸出結果為何?數位電子 甲級 程式語言 第 55 題 題目 圖片

數位電子 · 甲級 · 程式語言 · Q55

難易度分析

3 / 5

題目要求推斷程式輸出,需理解 int 型別的位數、堆疊反轉餘數以及每 8 位元插入空白。除 2 取餘的步驟並非單純記憶,故此題屬於中等難度。

正確答案:①00000000 00000000 00110000 00111001

① 00000000 00000000 00110000 00111001:程式將 12345 轉換為 32 位元二進位表示,利用 stack 的 LIFO 特性反轉餘數順序後輸出。12345 的二進位為 `00000000 00000000 00110000 00111001`,每 8 位元以空格分隔,此為正確答案。

錯誤選項解析

  • ② 00111000 00111001:此選項僅輸出 16 位元(兩個位元組),但程式中 `n = CHAR_BIT * sizeof(num)` 計算的是 int 型別的完整位元數(32 位元),因此位數不足。
  • ③ 10011100 00001100 00000000 00000000:此選項的二進位數值對應的是 負數或錯誤的數值,與 12345 的正確二進位表示不符。12345 為正整數,最高位元(sign bit)應為 0 而非 1。
  • ④ 10011100 00001100:此選項僅輸出 16 位元且數值錯誤,同樣不符合 32 位元 int 的完整二進位展開結果,且未正確表示 12345 的二進位值。
Learning Tip

"本題考點為 十進位轉二進位 的演算法實作,利用 stack 的後進先出(LIFO) 特性將餘數反轉。常考陷阱包括:CHAR_BIT 通常為 8,sizeof(int) 在多數系統為 4 位元組(32 位元);輸出時每 CHAR_BIT 位元插入空格,需注意空格位置在每組「之後」而非之前。實務上應熟悉 除 2 取餘數法 的手算過程以快速驗證答案。"

學員答題分佈

①00000000 00000000 00110000 001110010%
②00111000 001110010%
③10011100 00001100 00000000 000000000%
④10011100 000011000%

此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!

相似類型題目