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