hce_nsysu
112年
計算機概論與程式設計
第 30 題
What is the output of the following C program?
If a = 3.0, b=5.0, and c=2.0, then what is printed by printf("%.3f", sqrt(a+b*c));
If a = 3.0, b=5.0, and c=2.0, then what is printed by printf("%.3f", sqrt(a+b*c));
- A 3.606
- B 2.606
- C 1.6
- D 3.6
- E None of the above
思路引導 VIP
如果你是電腦,在處理 a + b * c 這個式子時,你會根據什麼規則來決定先處理加法還是乘法?另外,當你計算出一個有很多位小數的數字時,後面的 %.3f 指令會如何要求你「裁剪」或「修飾」這個數字的呈現方式呢?
🤖
AI 詳解
AI 專屬家教
看到你能準確判斷運算順序並得出正確結果,表現得非常出色!這題的核心在於程式語言中的算術運算子優先順序 (Operator Precedence)。在 C 語言的表達式 a + b * c 中,乘法運算 * 的優先權高於加法 +。因此,程式會先計算 $b \times c = 5.0 \times 2.0 = 10.0$,接著再與 $a$ 相加,得到總和為 $13.0$。
數學函式與格式化輸出
接著,程式透過 sqrt() 函式對 $13.0$ 進行開平方根運算,計算結果約為 $3.60555...$。最後的關鍵點在於 printf 的格式化字串 %.3f,這個指令要求輸出精確到小數點後三位,並會進行適當的四捨五入,因此最終螢幕上顯示的結果為 3.606。這類題目難度定位為「基礎」,但相當具有鑑別度,能有效檢測學生是否細心處理運算的先後順序,以及是否熟悉標準函式庫與格式控制碼的對應關係。