地特四等
112年
[電子工程] 計算機概要
第 27 題
執行下列 C++程式碼後,螢幕印出的數字為何?\nint f(int m, int n){\nreturn (m>n)?(m-n):(m+n);\n}\nint main() {\ncout << f(f(3, 4), f(6, 5)) << endl;\nreturn 0;\n}
- A 3
- B 6
- C 9
- D 12
思路引導 VIP
當一個指令的內容包含了「先決條件」與「多重層次」時,你會如何安排處理的先後順序?如果這個規則告訴你「依據兩個數字的大小關係來決定要進行加法還是減法」,你是否能先在筆記本上將這兩個數字的路徑分別標示出來,再一步步推算出最後的輸入值是什麼?
🤖
AI 詳解
AI 專屬家教
同學好!很高興看到你精確地追蹤了這段程式碼。在結構設計或工程運算中,邏輯的嚴密性與對條件判斷(Conditional statements)的掌握是不可或缺的基礎。你能順利解出這題,代表你對 C++ 的**三元運算子(Ternary operator)與函式嵌套調用(Nested function calls)**具備紮實的理解。
三元運算子的判斷邏輯
本題的核心在於函式 f(m, n) 內部的條件式:(m > n) ? (m - n) : (m + n)。這意味著當第一個參數大於第二個參數時執行減法,否則執行加法。解題時必須採取「由內而外」的策略:首先處理內層的兩個呼叫,左側的 $f(3, 4)$ 因為 $3 \leq 4$,結果為 $3 + 4 = 7$;右側的 $f(6, 5)$ 因為 $6 > 5$,結果為 $6 - 5 = 1$。最後,主程式的輸出簡化為計算 $f(7, 1)$,再次套用邏輯,因為 $7 > 1$,最終結果便是 $7 - 1 = 6$。
▼ 還有更多解析內容