返回列表 發帖

2022/06/05 作業練習

(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) 每一行都可能執行得到

此帖僅作者可見

TOP

此帖僅作者可見

TOP

返回列表