阿摩線上測驗 登入

申論題資訊

試卷:103年 - 103年關務人員、103年身心障礙人員及103年國軍上校以上軍官轉任考身障特考四等_資訊處理#31152
科目:程式設計
年份:103年
排序:0

申論題內容

四、以下是一個 C 語言程式片段: void sub(double a, double b) { int answer; answer = (int)((a+b)*(a-b)); return ; } int main() { int answer; double a = 5.0; double b = 3.5; answer = 0; sub(a,b); printf("%d ",answer); system("PAUSE"); return 0; } 請問該程式的輸出結果為何?(20 分)

詳解 (共 2 筆)

詳解 提供者:Chen Yuching
0
因為無回傳值,所以answer=0
詳解 提供者:hchungw
在這段 C 語言程式中,sub 函式被用來計算 (a + b) * (a - b) 的結果,並將該結果轉換為整數後儲存在局部變數 answer 中。然而,這個 answer 變數是 sub 函式內的局部變數,與 main 函式中的 answer 變數不是同一個變數。在 sub 函式結束後,其內的 answer 變數即被丟棄,並不會影響到 main 函式中的 answer 變數。
另外,sub 函式沒有返回任何值給 main 函式,也沒有透過參考或指標來修改 main 函式中的 answer 變數。因此,即使 sub 函式內部進行了計算,這些計算結果也不會反映到 main 函式中的 answer 變數上。
在 main 函式中,answer 被初始化為 0,並且在呼叫 sub(a, b) 之後,沒有其他操作改變 answer 的值。所以當執行到 printf("%d ", answer); 語句時,answer 仍然是 0。
因此,該程式的輸出結果將會是 0,後跟系統暫停的訊息(system("PAUSE"); 的作用),等待用戶按任意鍵繼續。