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