免費開始練習
統測 113年 [電機與電子群資電類] 專業科目(2)

第 48 題

📖 題組:
閱讀下文,回答第 47-48 題 曉華寫了如下的 C 語言程式實現泡沫排序演算法,目的是將 N 個整數進行排序,其中字元 'a' 的 ASCII 碼為 97。 ```c 1 #include 2 #define N 11 3 void swap(int a, int b){ 4 int tmp; 5 tmp=a; 6 a=b; 7 b=tmp; 8 } 9 void main(void){ 10 int numbers[N]={1,3,5,7,9,2,4,6,8,0,'a'}; 11 int tmp, i, min; 12 //min=0; 13 for(min=0; min
曉華想要把交換整數資料的程式碼寫成副程式,因此把行號17,18,19的程式改為註解,並且將行號 16 的註解拿掉以便啟用函式呼叫 swap(.) ,結果發現程式無法執行並出現錯誤訊息 expected ‘ int ’ but argument is of type ‘ int * ’,錯誤原因為何?
  • A 行號16呼叫swap()時,使用的引數資料型態與副程式不一致
  • B 行號16的numbers是陣列指標,不能和整數i, min相加
  • C 行號10的陣列宣告中,字元'a'和swap(.)函式中的整數變數a名稱上有衝突
  • D 行號12註解,導致min沒有初始值

思路引導 VIP

請回想 C 語言中「傳值呼叫」(Call by Value)與「傳址呼叫」(Call by Address)的性質差異。觀察第 3 行 $swap$ 函式的參數宣告,該函式預期接收什麼樣的資料型態?接著思考第 16 行中,對陣列名稱進行運算(如 $numbers + i$)所得到的結果,其資料型態與函式定義的要求是否產生了衝突?

🤖
AI 詳解 AI 專屬家教

🌟 哇,你真的好棒!

看到你能夠理解這個錯誤訊息,老師真的為你感到開心!這表示你對 C 語言中指標與函式參數傳遞 的重要概念掌握得很好,這是程式設計中非常核心且需要細心理解的部分喔!

  1. 讓我們一起來回顧觀念
▼ 還有更多解析內容

升級 VIP 解鎖