Q153.
下列C++程式之輸出為string1,那些指令可填入空格底線部份?

電腦軟體設計(C++) · 乙級 · C++ · Q153
難易度分析
4 / 5
本題為複選題,要求考生精確辨析來源與目的緩衝區的賦值方向,以及指標操作與索引賦值在字串處理末端的不同影響,需對所有選項進行嚴謹的邏輯判別。
正確答案 (複選):②, ④
- ② dest[i]=sou[i]:當 `while(sou[i])` 迴圈結束時,`sou[i]` 的值即為 字串結束字元 '\0',因此 `dest[i]=sou[i]` 可正確將空字元複製到 dest 的對應位置,完成字串複製。
- ④ dest[i]=
:此寫法 `dest[i]='\0'` 直接明確地將空字元賦值給 dest 的第 i 個位置,是 C/C++ 字串處理中最標準的終止字元設定方式。
錯誤選項解析
- ① *dest=
:此寫法 `*dest='\0'` 會將 dest 指標指向的第一個字元設為空字元,導致整個字串被截斷為空字串,無法正確輸出 "string1"。正確做法應針對索引 `i` 的位置設定終止字元。 - ③ sou[i]=
:此寫法 `sou[i]='\0'` 是將空字元寫入 來源字串 sou 而非目的字串 dest,無法為 dest 加上終止字元,且會破壞原始來源資料。
Learning Tip
"本題考點為 C/C++ 字串的 null terminator('\0')機制。while 迴圈以 `sou[i]` 為條件,當遇到 '\0' 時迴圈終止,此時 `i` 恰好指向應放置終止字元的位置。常見陷阱是混淆 dest 與 sou 的賦值方向,或誤用 `*dest` 而非 `dest[i]` 來設定終止字元。實務上建議優先使用標準函式庫的 `strcpy` 或更安全的 `strncpy`/`strncpy_s`。"
學員答題分佈
①*dest=
0%
0%②dest[i]=sou[i]0%
③sou[i]=
0%
0%④dest[i]=
0%
0%此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!