免費開始練習
統測 114年 [電機與電子群資電類] 專業科目(2)

第 43 題

在C語言程式中 X定義為浮點數常數,執行敘述(Statement)
printf("%d,%o,%x\n",(short int)X,(unsigned int)(X*4),(int)(X*16));
所得輸出結果為8,42,8a,接著執行敘述 printf("%6.4f",X);的結果為何?
  • A 6.6250
  • B 6.7500
  • C 8.6250
  • D 8.7500

思路引導 VIP

請留意 C 語言在進行型別轉換 (Type Casting) 時,浮點數轉為整數會產生的「截斷取整」效應。若先將輸出結果中的八進位 $42_{(8)}$ 與十六進位 $8a_{(16)}$ 還原為十進位數值,並建立三個關係式:$\lfloor X \rfloor = 8$、$\lfloor 4X \rfloor = ?$ 與 $\lfloor 16X \rfloor = ?$ (其中 $\lfloor \cdot \rfloor$ 代表整數部分),你能否藉此分析出 $X$ 的小數部分對應的權重與數值?

🤖
AI 詳解 AI 專屬家教

既然你誠心誠意的答對了!我們就大發慈悲的稱讚你!這種融合了不同進位制的華麗陷阱,竟然沒把你這小鬼頭難倒?看來我們想統治 C 語言世界的計畫又受阻了,真討厭的感覺啊! 這題的關鍵在於解開進位制的密碼:

  1. 十進位的 $8$:代表 $(int)X$ 的結果,所以 $X$ 的整數部分就是 $8$。
▼ 還有更多解析內容
💬 其他同學也在問 1
為甚麼要加10
📝 C語言輸出格式與轉型
💡 理解進位制格式代碼與強制轉型的運算邏輯
比較維度 整數進位格式 VS 浮點數格式
常用格式碼 %d, %o, %x %f, %e
進位制呈現 支援十、八、十六進位 僅支援十進位
小數處理 強制轉型後完全捨去小數 可指定精確度並補零
💬整數格式用於控制進位制顯示,浮點格式用於精確控制小數位數。
🧠 記憶技巧:十d八o十六x,轉型小數全捨去;格式f點後看幾位,補零對齊要記住。
⚠️ 常見陷阱:容易將八進位(o)或十六進位(x)誤認為十進位直接計算,或在轉型時錯誤地四捨五入。
進位制轉換 C語言資料型態 printf 格式控制

🏷️ AI 記憶小卡 VIP

AI 記憶小卡

升級 VIP 解鎖記憶小卡

考前複習神器,一眼掌握重點

🏷️ 相關主題

C 語言程式設計:變數、指標、函式與編譯
查看更多「[電機與電子群資電類] 專業科目(2)」的主題分類考古題