LONGEPASS
數位電子/程式語言/Q66
中等
正確率 -
Q66.

C 語言程式中,下列敘述何者正確?數位電子 甲級 程式語言 第 66 題 題目 圖片

數位電子 · 甲級 · 程式語言 · Q66

難易度分析

3 / 5

題目要求判斷多個敘述之真偽,核心在於理解函式呼叫前後局部變數與參數的值變化,以及值傳遞機制。此題屬於中等難度,因需要同時辨識兩項正確敘述而非單一選項。

正確答案 (複選):①, ②

  • ① 執行第10 列後會印出:呼叫func()之前,a=100,b=150:在呼叫 func() 函數之前,主程式中變數 a 與 b 保持其初始賦值狀態,分別為 100 與 150,此為 區域變數初始化 後的正常輸出結果。
  • ② 執行第11 列後會印出:於func()函數裡,a=340,b=10,c=30:進入 func() 函數內部 時,由於 C 語言採用 值傳遞 (pass by value) 機制,函數內的 a 為獨立副本,經運算後變為 340;而 b 與 c 的值分別為 10 與 30,反映函數內 局部變數 的實際狀態。

錯誤選項解析

  • ③ 執行第12 列後會印出:呼叫func()之後,a=100,b=100:此敘述錯誤。呼叫 func() 之後,因 C 語言預設為 值傳遞,函數內對參數的修改不會影響呼叫端的原始變數,故 a 仍為 100,但 b 應保持原值 150 而非 100,錯誤在於混淆了 值傳遞 與 位址傳遞 的行為。
  • ④ 執行第13 列後會印出:於func()函數裡,a=630,b=10,c=30:此敘述錯誤。函數內的 a 值應為 340 而非 630,數值計算有誤;此選項可能誤用了不同的 運算邏輯 或混淆了 全域變數 與 區域變數 的作用範圍。
Learning Tip

"此類題型核心考點為 C 語言的 參數傳遞機制(值傳遞 vs. 位址傳遞)與 變數作用域(全域變數、區域變數、靜態變數)。常見陷阱為誤以為函數內修改參數會影響呼叫端原始變數,實際上除非使用 指標 (pointer) 傳遞位址,否則函數操作的是 參數副本。實務上需特別注意 static 區域變數 的生命週期與 extern 全域變數 的可見範圍,此為國家技能檢定高頻考點。"

學員答題分佈

①執行第10 列後會印出:呼叫func()之前,a=100,b=1500%
②執行第11 列後會印出:於func()函數裡,a=340,b=10,c=300%
③執行第12 列後會印出:呼叫func()之後,a=100,b=1000%
④執行第13 列後會印出:於func()函數裡,a=630,b=10,c=300%

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

相似類型題目