(1)
若 A[][] 是一個 MxN 的整數陣列,下列程式片段用以計算 A 陣列每一列的總和,以下敘述何者不正確?
1. void main ()
2. {
3. for (int i=0; i<M; i=i+1)
4. {
5. int rowsum = 0;
6. for (int j=0; j<N; j=j+1)
7. {
8. rowsum = rowsum + A[i][j];
9. }
10. printf("The sum of row %d is %d.\n", i, rowsum);
11. }
12. }
(A) 第一列總和是正確的,其他列總和也是正確的
(B) 程式片段在執行時不會產生錯誤 (run-time error)
(C) 程式片段中沒有語法上的錯誤
(D) 程式片段會完成執行並正確印出A陣列全部元素的總和
(2)
若以 B(4,1)呼叫下列 B()函式,總共會印出幾次 “I love you”?
1. int B (int n, int k)
2. {
3. if (k == 0 || k == n)
4. {
5. printf ("I love you\n");
6. return 1;
7. }
8. return B(n-1,k-1) + B(n-1,k);
9. }
(3)
給定下列程式,其中 s 有被宣告為全域變數,請問程式執行後輸出為何?
1. int s =0; // 全域變數
2. void add (int a)
3. {
4. int s = 5;
5. for( ; a>=0; a=a-1)
6. {
7. printf("%d,", s);
8. s++;
9. printf("%d,", s);
10. }
11. }
12. int main ()
13. {
14. printf("%d,", s);
15. add(s);
16. printf("%d,", s);
17. s = 8;
18. printf("%d", s);
19. return 0;
20. }
(4)
下列 F()函式執行時,若輸入依序為整數 9,8,7,6,5,4,3,2,1,0,請問 X[] 陣列的元素值依順序為何?
1. void F ()
2. {
3. int X[10] = {0};
4. for (int i=0; i<10; i=i+1)
5. {
6. scanf("%d", &X[(i+2)%10]);
7. }
8. }
(5)
若以 G(60)呼叫下列函式後,n 的值為何?
1. int n = 0;
2. void K (int b)
3. {
4. n = n + 1;
5. if (b % 3)
6. K(b+1);
7. }
8. void G (int m)
9. {
10. for (int i=0; i<m; i=i+1)
11. {
12. K(i);
13. }
14. }
(6)
若 A[0]、A[1],和 A[2]分別為陣列 A[]的三個元素(element),下列那個程式片段可以將 A[0]和 A[1]的內容交換?
(A) A[0] = A[1]; A[1] = A[0];
(B) A[2] = A[1]; A[1] = A[0]; A[0] = A[2];
(C) A[1] = A[0]; A[2] = A[1]; A[0] = A[2];
(D) 以上皆可
(7)
若函式 rand()的回傳值為一介於 0 和 10000之間的亂數,下列那個運算式可產生介於 200 和500 之間的任意數(包含 20 和 50)?
(A) rand() % 200 + 301
(B) rand() % 500 + 1
(C) rand() % 200 + 101
(D) rand() % 301 + 200
(8)
下列程式片段無法正確列印 10 次的"Hi!",請問下列哪一個修正方式仍無法正確列印 20 次的"Hi!"?
for (int i=0; i<=100; i=i+10)
{
printf ("%s\n", "Hi!");
}
(A) 需要將 i<=100修正為 i<100
(B) 需要將 i=0 修正為 i=10
(C) 需要將 i=0 和 i<=100 分別修正為 i=10 和 i<100
(D) 0將 i<=100 和 i=i+10 分別修正為 i<20 和 i=i+2
(9)
若以 F(12)呼叫下列 F()函式,總共會印出哪些數字?共幾行?
1. void F (int n)
2. {
3. printf ("%d\n" , n); //印出一行n的值
4. if ((n%2== 1) && (n > 1))
5. {
6. return F(5*n+1);
7. }
8. else
9. {
10. if (n%2 == 0)
11. return F(n/2);
12. }
13. }
(10)
給定下列函式 F(),執行 F()時哪一行程式碼可能永遠不會被執行到?
1. void F (int a)
2. {
3. while (a < 10)
4. a = a + 5;
5. if (a <= 12)
6. a = a + 2;
7. if (a >13)
8. a = 5;
9. }
(A) a = a + 5;
(B) a = a + 2;
(C) a = 5;
(D) 每一行都可能執行得到 |