九九年鐵路特考高員三級程式語言
一、試以 C (或以 C 為基礎) 之程式語言撰寫一函式 (function),以計算一自然數 n 之斐波那契 (Fibonacci) 值 F(n)。
(一)使用遞迴 (recursion) 方式撰寫。(10分)
(二)使用非遞迴方式撰寫。(10分)
提示:Fibonacci function:F(0) = F(1) = 0;當 n > 1 時 F(n) = F(n-1) + F(n-2)
二、下列語法明確 (unambiguous) 或不明確?試證明之。(20分)
→
→ + |
→ a | b | c
三、一函數 fun 定義如程式 A 所示,若將 fun 使用於程式 B 中,則 sum1 及sum2 之值分別為何?
(一)若各表示式中,由左至右運算。(10分)
(二)若各表示式中,由右至左運算。(10分)
程式A: 程式B:
int fun (int *k) { void main ( ) {
*k += 4; int a =8, b = 16, sum1, sum2;
Return 3 * (*k) – 2; sum1 = (a / 2) + fun (&a);
} sum2 = fun (&b) + (b / 2);
}
四、如下列程式所示:
void swap (int i, int j) {
int temp;
temp = i;
i = j ;
j = temp ;
}
void main ( ) {
int val, arrist[5] = {4, 6, 3, 1, 2};
swap (val, arrlist[0]);
swap (arrlist[0], arrlist[1]);
swap (val, arrlist[val]);
}
(一)若參數之傳遞是依據以值呼叫方式 (call by value),試分別列出各次呼叫(呼叫三次) 後,變數 val 及陣列 arrlist 之值。(10分)
(二)若參數之傳遞是依據以參考地址呼叫方式 (call by reference),試分別列出各次呼叫 (呼叫三次) 後,變數 val 及陣列 arrlist 之值。(10分)
五、正交性 (Orthogonality) 及別名關係 (Aliasing) 均為一般程式語言中具備之重要特性,試就其在程式語言中之用途,分別說明之。(20分)
留言列表