LONGEPASS
電腦軟體設計(C++)/C++/Q161
困難
正確率 -
Q161.

有關下列C++程式的敘述那些錯誤?電腦軟體設計(C++) 乙級 C++ 第 161 題 題目 圖片

電腦軟體設計(C++) · 乙級 · C++ · Q161

難易度分析

4 / 5

本題涉及 C++ 指標與字串比較之核心概念,且採用複選題形式,要求考生必須詳盡分析每個選項的邏輯真偽,具有較高的認知負荷與易錯陷阱。

正確答案 (複選):①, ③, ④

  • ① 輸出s1==s2:此敘述錯誤。程式中使用 == 運算子比較 C-style 字串(char 陣列) 時,實際比較的是記憶體位址而非字串內容,因此即使內容相同也會判定為不相等,程式不會輸出 s1==s2。
  • ③ 下列程式可判斷兩字串是否相等:此敘述錯誤。該程式無法正確判斷兩字串內容是否相等,因為 C++ 中對 char 陣列使用 == 僅比較起始位址。正確做法應使用 strcmp() 函式 或改用 std::string 類別 才能比較字串內容。
  • ④ 將 if…else 兩行程式改為s1==s2 ? cout<<電腦軟體設計(C++) 乙級 C++ 第 161 題 選項 ④ 第一張圖片s1==s2 電腦軟體設計(C++) 乙級 C++ 第 161 題 選項 ④ 第二張圖片: cout<<電腦軟體設計(C++) 乙級 C++ 第 161 題 選項 ④ 第三張圖片s1!=s2 電腦軟體設計(C++) 乙級 C++ 第 161 題 選項 ④ 第四張圖片就可判斷兩字串是否相等:此敘述錯誤。改為三元運算子(?:) 寫法僅是語法簡化,底層仍是使用 == 比較記憶體位址,並未解決內容比較的根本問題。要正確判斷仍需使用 strcmp() 或 std::string。

錯誤選項解析

  • ② 輸出s1!=s2:此敘述正確。由於 == 比較的是指標位址,兩個獨立宣告的字串陣列即使內容相同,位址也不同,因此條件判斷為 false,程式會執行 else 分支輸出 s1!=s2。
Learning Tip

"本題核心考點為 C-style 字串與 std::string 的比較差異。在 C++ 中,char 陣列使用 == 比較的是指標位址,必須使用 strcmp()(回傳 0 表示相等)或改用 std::string 才能直接以 == 比較內容。實務上強烈建議使用 std::string 以避免此類指標迷思,這也是乙丙級檢定中極易混淆的常考陷阱。"

學員答題分佈

①輸出s1==s20%
②輸出s1!=s20%
③下列程式可判斷兩字串是否相等0%
④將 if…else 兩行程式改為s1==s2 ? cout<<電腦軟體設計(C++) 乙級 C++ 第 161 題 選項 ④ 第一張圖片s1==s2 電腦軟體設計(C++) 乙級 C++ 第 161 題 選項 ④ 第二張圖片: cout<<電腦軟體設計(C++) 乙級 C++ 第 161 題 選項 ④ 第三張圖片s1!=s2 電腦軟體設計(C++) 乙級 C++ 第 161 題 選項 ④ 第四張圖片就可判斷兩字串是否相等0%

此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!

相似類型題目