Q50.
對於以下C 程式,執行後輸出是那一個?
電腦軟體設計(C++) · 乙級 · C++ · Q50
難易度分析
3 / 5
考題要求追蹤多個指標變數在程式執行過程中的指向變更,需精確區分指標賦值與內容修改的差異,具備一定的邏輯追蹤能力。
正確答案:③5
③ 5:輸出為 5 是正確的。程式執行流程:q = &k 使 q 指向 k(值為 5);p = q 使 p 也指向 k;q = &j 僅改變 q 的指向,不影響 p。因此 \*p 仍指向 k 的值 5。
錯誤選項解析
- ① 3:輸出為 3 是錯誤的。程式中變數 k 初始化為 5,j 初始化為 6,沒有任何運算會產生值 3。
- ② 4:輸出為 4 是錯誤的。程式中沒有對變數進行任何遞減或算術運算,不會產生值 4。
- ④ 6:輸出為 6 是錯誤的。雖然 q 最終指向 j(值為 6),但 printf 輸出的是 \*p 而非 \*q,p 仍指向 k(值為 5)。
Learning Tip
"本題考 指標變數的指向關係 與 指標賦值 的概念。關鍵在於理解 p = q 是將 q 當時指向的位址複製給 p,之後 q 改變指向(q = &j)不會影響 p 的指向。常考陷阱是混淆 \*p 與 \*q 的最終值,務必追蹤每個指標變數在每一步的指向目標。"
學員答題分佈
①30%
②40%
③50%
④60%
此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!