Q78.
下列仿C 的程式片段,執行結果輸出為何者?
電腦軟體設計共同科目 · 乙級 · Q78
難易度分析
3 / 5
本題涉及指標偏移量計算與字串陣列的修改操作,需要正確推導指標指向的記憶體位置,並分析賦值對原字串產生的影響,具有一定的邏輯推理步驟。
正確答案:④dabed
④ dabed:正確。`p = s+2` 使 `p` 指向 `s[2]`,故 `p[1]` 等於 `s[3]` 即 'd';`s[2]` 被改為 'e' 後字串變為 "abed",`printf("%c%s", p[1], s)` 輸出 "dabed"。
錯誤選項解析
- ① babed:此選項忽略了指標 `p` 的偏移量。`p` 指向 `s+2`(即字元 'c'),因此 `p[1]` 實際上是 `s[3]`,輸出應為 'd' 而非 'b'。
- ② cabed:此選項錯誤地將 `p[1]` 解讀為 'c'。由於 `p = s+2` 指向索引 2 的位置,`p[1]` 應指向索引 3 的字元 'd',而非索引 2 的字元。
- ③ abcde:此選項未考慮 `s[2] = 'e'` 的賦值操作。原字串 "abcd" 經 `s[2] = 'e'` 修改後變為 "abed",因此 `%s` 部分應輸出 "abed" 而非 "abcde"。
Learning Tip
"本題核心考點為 指標偏移運算 與 字串陣列修改。關鍵在於理解 `p = s+2` 後,`p[1]` 等價於 `*(p+1)` 即 `s[3]`。常見陷阱是混淆 `p[0]` 與 `p[1]` 的索引對應關係,以及忽略 `s[2] = 'e'` 對原字串內容的修改。實務上需熟記 指標算術 中 `p[i]` 等同於 `*(p+i)` 的等價關係。"
學員答題分佈
①babed0%
②cabed0%
③abcde0%
④dabed0%
此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!