標題:
2022/05/08 作業練習
[打印本頁]
作者:
ray
時間:
2022-5-7 16:38
標題:
2022/05/08 作業練習
(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)
[attach]13042[/attach]
(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。
作者:
劉愷恩
時間:
2022-5-8 16:03
此帖僅作者可見
作者:
李知易
時間:
2022-5-8 16:30
此帖僅作者可見
歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/)
Powered by Discuz! 7.2