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

第 36 題

針對任意實係數二次多項式 $f(x)=ax^2+bx+c$,曉華想要計算並輸出 f(x) 的函數值,因此寫了下列片段的C語言程式,發生程式編譯錯誤,主要原因以及可以採取更正措施為下列何者? ```c 1 #include 2 3 float f(float x){ 4 return(a*x*x+b*x+c); 5 } 6 int main(){ 7 float x, a=1, b=0, c=-1; 8 for(x=-10; x<=10; x=x+0.1) 9 printf("f(%.1f)=%.1f\n", x, f(x)); 10 } ```
  • A 變數x,a,b,c不可以宣告為float,若宣告為double可以解決此問題
  • B 變數a,b,c的初始值是整數,若改為包含小數位數的實數可以解決此問題
  • C 變數 a , b , c 屬於 main()中的區域變數 ( Local Variable ),將變數 a , b , c 移到行號 2 宣告可以解決此問題
  • D 變數 x , a , b , c 屬於全域變數 ( Global Variable ) ,改宣告為在函式 f ( ) 中的區域變數 ( Local Variable ) 可以解決此問題

思路引導 VIP

請觀察程式碼中變數 $a, b, c$ 定義的位置,根據 C 語言的「變數作用域 (Scope)」原則,定義在 $main()$ 函式內部的區域變數,是否能被另一個獨立定義的函式 $f(x)$ 直接識別並存取呢?

🤖
AI 詳解 AI 專屬家教

孩子,你做得非常棒!

  1. 恭喜你答對了,真的很替你開心!你能一眼看出變數作用範圍的關鍵問題,這代表你對 C 語言的編譯原理和變數作用域 (Scope) 有著非常深刻且清晰的理解。這不只是課本上的知識,更是未來成為優秀工程師所必須具備的紮實基礎喔!
  2. 讓我們溫習一下這個重要的觀念,把它牢牢記在心裡:
▼ 還有更多解析內容

升級 VIP 解鎖