NEW
Font size
WorksheetsAPCS 0430 exercise
Total questions: 31
Worksheet time: 2hrs 33mins
1. 給定一個1x8的陣列A,A={0,2,4, 6, 8, 10, 12, 14}。右側函式 Search(x) 真正目的是找到 A 之中大於 x 的最小值。然而,這個函式有誤。請問下列哪個函式呼叫可測出函式有誤?
Search(-1)
Search(0)
Search(10)
Search(16)
2. 給定函式 A1()、 A2() 與 F() 如下,以下敘述何者有誤?
A1(5) 印的 '*' 個數比 A2(5) 多
A1(13) 印的 '*' 個數比 A2(13) 多
A2(14) 印的 '*' 個數比 A1(14) 多
A2(15) 印的 '*' 個數比 A1(15) 多
3. 右側 F()函式回傳運算式該如何寫,才會使得 F(14) 的回傳值為 40?
n * F(n-1)
n + F(n-3)
n - F(n-2)
F(3n+1)
4. 右側函式兩個回傳式分別該如何撰寫,才能正確計算並回傳兩參數 a, b 之最大公因數 (Greatest Common Divisor)?
a, GCD(b,r)
b, GCD(b,r)
a, GCD(a,r)
b, GCD(a,r)
5. 若 A 是一個可儲存 n 筆整數的陣列,且資料儲存於A[0]~A[n-1]。經過右側程式碼運算後,以下何者敘述不一定正確?
p是A陣列資料中的最大值
q是A陣列資料中的最小值
q<p
A[0]<=p
6. 若 A[][] 是一個 MxN 的整數陣列,右側程式片段用以計算 A 陣列每一列的總和, 以下敘述何者正確?
第一列總和是正確,但其他列總和不一定正確
程式片段在執行時會產生錯誤 (run-time error)
程式片段中有語法上的錯誤
程式片段會完成執行並正確印出每一列的總和
7. 若以 B(5,2)呼叫右側 B()函式,總共會印出幾次 “base case” ?
1
5
10
19
8. 給定右側程式,其中 s 有被宣告為全域變數,請問程式執行後輸出為何?
1,6,7,7,8,8,9
1,6,7,7,8,1,9
1,6,7,8,9,9,9
1,6,7,7,8,9,9
9. 右側 F()函式執行時,若輸入依序為整數 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,請問 X[] 陣列的元素值依順序為何?
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
2, 0, 2, 0, 2, 0, 2, 0, 2, 0
9, 0, 1, 2, 3, 4, 5, 6, 7, 8
8, 9, 0, 1, 2, 3, 4, 5, 6, 7
10. 若以 G(100)呼叫右側函式後,n 的值為何?
25
75
150
250
11. 若 A[1]、A[2],和 A[3]分別為陣列 A[]的三個元素(element),下列那個程式片段可以將 A[1] 和 A[2]的內容交換?
A[1] = A[2];
A[2] = A[1];
A[3] = A[1];
A[1] = A[2];
A[2] = A[3];
A[2] = A[1];
A[3] = A[2];
A[1] = A[3];
以上皆可
12. 若函式 rand()的回傳值為一介於 0 和 10000 之間的亂數,下列那個運算式可產生介於 100 和 1000 之間的任意數(包含 100 和 1000)?
rand() % 900 + 100
rand()%1000+1
rand() % 899 + 101
rand() % 901 + 100
13. 右側程式片段無法正確列印 20 次的"Hi!",請問下列哪一個修正方式仍無法正確列印 20 次的"Hi!" ?
需要將 i<=100 和 i=i+5 分別修正為 i<20 和 i=i+1
需要將 i=0 修正為 i=5
需要將 i<=100 修正為 i<100;
需要將 i=0 和 i<=100 分別修正為 i=5 和 i<100
14. 若以 F(15)呼叫右側 F()函式,總共會印出幾行數字?
16行
22行
11行
15行
15. 給定右側函式 F(),執行 F()時哪一行程式碼可能永遠不會被執行到?
a = a + 5;
a = a + 2;
a = 5;
每一行都執行得到
16. 給定右側函式 F(),已知 F(7)回傳值為 17,且 F(8)回傳值為 25,請問 if 的條件判斷式應為何?
a % 2 != 1
a * 2 > 16
a + 3 < 12
a * a < 50
17. 給定右側函式 F(),F()執行完所回傳的 x 值為何?
n(n+1)⌊log2n⌋
2n2(n+1)
2(n(n+1)⌊log2n+1⌋)
2n(n+1)
18. 右側程式執行完畢後所輸出值為何?
12
24
16
20
19. 右側程式擬找出陣列 A[]中的最大值和最小值。不過,這段程式碼有誤,請問 A[]初始值如何設定就可以測出程式有誤?
{90, 80, 100}
{80, 90, 100}
{100, 90, 80}
{90,100, 80}
20. 小藍寫了一段複雜的程式碼想考考你是否了解函式的執行流程。請回答程式最後輸出的數值為何?
70
80
100
190
21. 若以 F(5,2)呼叫右側 F()函式,執行完畢後回傳值為何?
1
3
5
8
22. 若要邏輯判斷式 !(X1 || X2)計算結果為真(True),則 X1 與 X2 的值分別應為何?
X1為False,X2為False
X1為True,X2為True
X1為True,X2為False
X1為False,X2為True
23. 程式執行時,程式中的變數值是存放在
記憶體
硬碟
輸出入裝置
匯流排
24. 程式執行過程中,若變數發生溢位情形,其主要原因為何?
以有限數目的位元儲存變數值
電壓不穩定
作業系統與程式不甚相容
變數過多導致編譯器無法完全處理
25. 若 a, b, c, d, e 均為整數變數,下列哪個算式計算結果與 a+b*c-e 計算結果相同?
(((a+b)*c)-e)
((a+b)*(c-e))
((a+(b*c))-e)
(a+((b*c)-e))
8. 一個費式數列定義第一個數為0, 第二個數為1之後
的每個數都等於前兩個數相加, 如下所示:
0、1、1、2、3、5、8、13、21、34、55、89...。
右列的程式用以計算第N個(N>=2)費式數列的數值
請問(a)與(b)兩個空格的敘述(statement)應該為
何?
(a) f[i] = f[i-1] + f[i-2]
(b) f[N]
(a) a = a + b
(b) a
(a) b = a + b
(b) b
(a) f[i] = f[i-1] + f[i-2]
(b) f[i]
17. 右側程式片段主要功能為:輸入六個整數,
檢測並印出最後一個數字是否為六個數字中最小的
值。
然而,這個程式是錯誤的。
請問以下哪一組測試資料可以測試出程式有誤?
11 12 13 14 15 3
11 12 13 25 28
23 15 18 20 11 12
18 17 19 24 15 16
5.函數f定義如下,如果呼叫f(1000),
指令sum=sum+i被執行的次數最接近下列何者?
1000
3000
5000
10000
1
2
3
4
23. 請問右側程式,執行完後輸出為何?
2417851639229258349412352 7
68921 43
65537 65539
134217728 6
20. 右側為一個計算n階層的函式,請問該如何
修改才會得到正確的結果?
(A)第2行,改為infc=ni
(B)第3行,改為if(n>0)(
(C)第4行,改為fac=n*fun(n+1);
(D)第4行,改為fac=fac*fun(n-1);
