免費開始練習
地特四等申論題 111年 [統計] 資料處理概要

第 一 題

📖 題組:
四、以下為某種程式語言的pseudocodes,其中main()為主程式,p(int x, int y, int z)為被呼叫的副程式。 main( ) { x = 2; y = 5; p(x, y, 3); print x, y} p(int y, int x, int z) { x = x+z; z = x+1; x = y+z; y = z;} (一)若副程式是以傳名呼叫(passed by name)法,則主程式印出的結果為何?(3 分) (二)若副程式是以傳址呼叫(passed by reference)法,則主程式印出的結果為何?(3 分) (三)若副程式是以傳值呼叫(passed by value)法,則主程式印出的結果為何?(3 分)
📝 此題為申論題,共 3 小題

小題 (一)

若副程式是以傳名呼叫(passed by name)法,則主程式印出的結果為何?(3 分)

思路引導 VIP

看到傳名呼叫(Call by Name),第一步應先將副程式內的形參以實參做純粹的「文字替換」,需特別注意主程式與副程式間變數名稱重疊(如x, y)的陷阱。第二步則要檢驗替換後的敘述是否合法,尤其是遇到「常數」做為實參傳入且被指派新值時,應敏銳點出左值(l-value)的錯誤問題。

🤖
AI 詳解
AI 專屬家教

【解題思路】傳名呼叫(Call by Name)採用「文字替換」(Textual Substitution)與延遲求值機制,解題時需嚴謹對應實參與形參,並留意常數不可作為被指派標的(即不具備左值 l-value 屬性)之語法限制。 【詳解】 已知:主程式初始變數 main_x = 2, main_y = 5。

小題 (二)

若副程式是以傳址呼叫(passed by reference)法,則主程式印出的結果為何?(3 分)

思路引導 VIP

面對參數傳遞題型,首要確認「傳遞機制」。傳址呼叫(Pass by Reference)的核心在於「記憶體共用」,需特別留意主程式傳入的引數與副程式接收的參數名稱是否故意交錯(如主程式的 x 傳給副程式的 y),建議利用下標標註法逐步追蹤每個位址的數值變化。

🤖
AI 詳解
AI 專屬家教

【解題思路】傳址呼叫(Pass by Reference)會將實際參數的記憶體位址傳遞給副程式,修改形式參數等同於直接修改主程式的實際參數;解題關鍵在於釐清參數傳遞順序所造成的變數名稱交錯。 【詳解】 已知:主程式變數 x_main = 2、y_main = 5;呼叫 p(x, y, 3) 時,常數 3 於實務考題中通常視為配置於一暫存記憶體位址。

小題 (三)

若副程式是以傳值呼叫(passed by value)法,則主程式印出的結果為何?(3 分)

思路引導 VIP

看到「傳值呼叫(pass by value)」應立刻聯想到「拷貝」概念。主程式僅將變數的值複製給副程式的參數,因此副程式內部對參數的任何修改,皆不會影響主程式原有變數的記憶體內容。

🤖
AI 詳解
AI 專屬家教

【解題思路】運用傳值呼叫(Call by Value)的特性,副程式對參數的修改不會回傳並影響主程式的變數。 【詳解】 已知:主程式變數 x = 2, y = 5。呼叫副程式 p(x, y, 3),即將數值 (2, 5, 3) 傳遞給副程式。

📝 同份考卷的其他題目

查看 111年[統計] 資料處理概要 全題

升級 VIP 解鎖