Q57.
針對以下C 程式,執行後輸出是那一個?
電腦軟體設計(C++) · 乙級 · C++ · Q57
難易度分析
3 / 5
本題要求考生能精確追蹤迴圈的執行流程,並留意計數變數的非典型初始值設定,屬於需要細心分析程式邏輯以避免陷阱的基礎應用題。
正確答案:③8
③ 8:函數 `f` 使用 for 迴圈同時遞增索引 `i` 與指標 `s`,直到遇到字串結束字元 '\0'。字串 "abcdefg" 長度為 7,`i` 從 1 開始遞增至 8 時迴圈結束,故輸出 8。
錯誤選項解析
- ① 0:字串長度計算不會從 0 開始,因為迴圈初始值 `i=1`,且字串 "abcdefg" 包含 7 個字元,結果應為 7+1=8。
- ② 7:此選項僅計算了字串 "abcdefg" 的字元個數 7,但忽略了變數 `i` 的初始值為 1,每次遞增後最終值會比字串長度多 1。
- ④ 10:數值 10 與本題字串長度計算邏輯無關,字串 "abcdefg" 僅有 7 個有效字元,加上初始值 1 後結果為 8。
Learning Tip
"本題考點為 C 語言字串走訪與指標運算。關鍵在於理解 `for(i=1; *s; i++, s++)` 的執行邏輯:`*s` 作為迴圈條件,會在遇到 NULL 字元 '\0' 時終止。由於 `i` 從 1 開始計數(而非 0),最終返回值會比實際字串長度多 1。常見陷阱是忽略初始值設定,誤選字串長度 7。"
學員答題分佈
①00%
②70%
③80%
④100%
此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!