Board logo

標題: 2022/05/08 作業練習 [打印本頁]

作者: ray    時間: 2022-5-7 16:38     標題: 2022/05/08 作業練習

(1)
下列程式片段中, 假設 a, a_ptr 和 a_ptrptr 這三個 變數 都有被正確宣告,且 呼叫 G() 函式時的參數為 a_ptr 及 a_ptrptr 。G() 函式的兩個 參數型態 該如何宣告?
  1. void G ( (a)_____    b_ptr,  (b)______   b_ptrptr)
  2. {
  3.     …
  4. }
  5. void main ()
  6. {
  7.    int b = 1;
  8.    // 加入 b_ptr, b_ptrptr 變數的宣告
  9.    …
  10.    b_ptr = &b;   
  11.    b_ptrptr = &b_ptr;  
  12.    G(b_ptr, b_ptrptr);
  13. }
複製代碼
(2)
下列程式片段中 執行後若要印出下列圖案, (a) 的條件判斷式該如何設定?
*******
  *****
    ***
      *
  1. 1.        for (int i=0; i<=3; i=i+1)  
  2. 2.        {
  3. 3.            for (int j=0; j<=i; j=j+1)
  4. 4.                  printf(" ");  
  5. 5.            for (int k=6-2*i; (a)________ ; k=k-1)
  6. 6.           printf("*");  
  7. 7.      printf("\n");
  8. 8  . }
複製代碼
(3)
給定下列G()函式,執行G(5)後輸出為何?
  1. 1.        void G (int a)
  2. 2.        {
  3. 3.             printf ("%d ", a);
  4. 4.             if (a<=3)
  5. 5.                 return;
  6. 6.             else
  7. 7.                 G(a-1);
  8. 8.             printf ("%d ", a);
  9. 9.        }
複製代碼
(4)
下列程式碼是自動計算找零程式的一部分, 程式碼中三個主要變數分別為 Total (購買總額 ),Paid (實際支付金額 ),Change (找零金額 )。但是此程式片段有冗餘的程式碼,請找出冗餘程式碼的區塊。
  1. 1.         int Total, Paid, Change;
  2. 2.         …
  3. 3.         Change = Paid - Total;
  4. 4.         printf ("500 : %d pieces\n", (Change-Change%500)/500);  
  5. 5.         Change = Change % 500;
  6. 6.         printf ("100 : %d coins\n", (Change-Change%100)/100);  
  7. 7.         Change = Change % 100;
  8. 8.        // A 區
  9. 9.         printf (“50 : %d coins\n”, (Change-Change%50)/50);
  10. 10.         Change = Change % 50;
  11. 11.        // B 區
  12. 12.         printf ("10 : %d coins\n", (Change-Change%10)/10);  
  13. 13.         Change = Change % 10;
  14. 14.        // C 區
  15. 15.         printf ("5 : %d coins\n", (Change-Change%5)/5);  
  16. 16.         Change = Change % 5;
  17. 17.         // D 區
  18. 18.         printf ("1 : %d coins\n", (Change-Change%1)/1);
  19. 19.         Change = Change % 1;
複製代碼
(5)
下列程式片段執行過程的輸出為何?
  1. 1.        int G (int B)
  2. 2.        {
  3. 3.            B = B * B;
  4. 4.            return B;
  5. 5.        }
  6. 6.        int main ()
  7. 7.        {
  8. 8.            int A=0, m=6;
  9. 9.            A = G(m);
  10. 10.            if (m >3)
  11. 11.                A = G(m) + A;
  12. 12.            else
  13. 13.                A = G(m);
  14. 14.            printf ("%d \n", A);
  15. 15.            return 0;
  16. 16.        }
複製代碼
(6)
下列 G() 為一支遞迴函式,已知當 a 固定為2,不同的變數 x 值會有不同的回傳值如下表所示。請找出 G()函式中 (a) 處的計算式該為何?
a值    x 值    G(a, x) 回傳值
2        0        1
2        1        7
2        2        49
2        3        343
2        4        2401
2        5        16807
  1. 1.        int G (int a, int x)
  2. 2.        {
  3. 3.            if (x == 0)
  4. 4.                return 1;
  5. 5.            else
  6. 6.                return   (a)    ;
  7. 7.        }
複製代碼
(A) ((2*a)+2) * G(a, x - 1)  
(B) (a+5) * G(a, x - 1)
(C) ((3*a)-1) * G(a, x - 1)  
(D) (a+6) * G(a, x - 1)
(7)
[attach]13042[/attach]
(8)
下列程式,執行完後輸出為何?
  1. 1.        int i=3, x=5;
  2. 2.        int N=5536;
  3. 3.        while (i <= N)
  4. 4.        {
  5. 5.            i = i * i * i;
  6. 6.            x = x + 1;
  7. 7.        }
  8. 8.        printf ("%d %d \n",  i, x);
複製代碼
(9)
下列 F() 為遞迴 函式 ,G(2, 6) 執行後回傳值為何?
  1. 1.        int F(int a, int x)
  2. 2.        {
  3. 3.            if (x == 0)
  4. 4.               return 1;
  5. 5.            else
  6. 6.               return (a * G(a, x-1));
  7. 7.        }
複製代碼
(10)
下列函式 若以 search (1, 20,5) 呼叫時, search 函式 總共 會被 執行 幾次?
  1. 1.        void search(int x,int y,int z)
  2. 2.        {
  3. 3.             if (x < y)
  4. 4.             {
  5. 5.                 t =ceiling((x+y)/2);
  6. 6.                 if(z >= t)
  7. 7.                     search(t,y,z);
  8. 8.                 else
  9. 9.                     search(x,t-1,z);
  10. 10.             }
  11. 11.        }
複製代碼
註:ceiling()為無條件進位至整數位。
例如ceiling(3.1)=4,ceiling(3.9)=4。
作者: 劉愷恩    時間: 2022-5-8 16:03

此帖僅作者可見
作者: 李知易    時間: 2022-5-8 16:30

此帖僅作者可見




歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/) Powered by Discuz! 7.2