返回列表 發帖

2022/05/21作業練習

(1)
下列函式以 F(6) 呼叫 後回傳值為8,則<condition> 應為何 ?
1.        int F(int a){
2.            if ( <condition> )//<condition>指條件設定
3.                return 1;
4.            else
5.                return F(a-1) + F(a-2);
6.        }

(2)
若n 為正整數,下列程式三個迴圈執行完畢後 a 值將為何?
int a=0, n;

for (int i=1; i<=n; i=i+1)  //執行n次
    for (int j=1; j<=n; j=j+1) //執行n × n次
        for (int k=1; k<=n; k=k+1) //執行n × n × n次= n3次
            a = a + 1;                                       

(3)
給定下列程式,其中 s 有被宣告為全域變數,請問程式執行後輸出為何?

int s = 2; // 全域變數
void add (int a){
    int s = 5;
    for( ; a>=0; a=a-2) {
        printf("%d,", s);
        s++;
        printf("%d,", s);
   }
}
int main (){
    printf("%d,", s);   //2
    add(s);  //5,6,6,7
    printf("%d,", s);//2
    s = 8;
    printf("%d", s);//8
    return 0;
}     

(4)
下列是依據分數 s 評定等第的程式碼片段,正確的 等第公式 應為:
90~100 判為 A 等
80~89 判為 B 等
70~79 判為 C 等
60~69 判為 D 等
0~59 判為 F 等

if (s>=90){
    printf ("A \n");
}
else if (s>=70){    //80,81,82,83,84,85,86,87,88,89 會被誤判為C等級,共10個數
     printf ("C \n");
}
else if (s>=60) {   
     printf ("D \n");
}
else if (s>80){
     printf ("B \n");
}
else{
     printf ("F\n");  
}               

這段程式碼在處理 0~100 的分數時,
有幾個分數的等第是錯的?
(A) 20    (B) 11    (C) 2  (D) 10

(5)
下列主程式執行完三次 G() 的呼叫後, p陣列中有幾個元素的值為 3?
int K (int p[], int v){
    if (p[v]!=v) {
      p[v] = K(p, p[v]);
   }
    return p[v];
}
void G (int p[], int l, int r){
     int a=K(p, l), b=K(p, r);
     if (a!=b){
           p[a] = b;
     }
}
int main (void)
{
    int p[4]={0,1, 2, 3};
    G(p, 0, 1);
    G(p, 2, 3);
    G(p, 0, 3);
    return 0;

}

(6)
下列程式片段執行後,count 的值為何?

1.        int maze[5][5]= { {1, 1, 1, 1, 1},
2.                          {1, 0, 1, 0, 1},
3.                             {1, 1, 0, 0, 1},
4.                            {1, 0, 0, 1, 1},
5.                           {1, 1, 1, 1, 1} };
6.        int count=0;
7.        for (int i=1; i<=2; i=i+1){
8.            for (int j=1; j<=2; j=j+1)  {
9.                int dir[3][2] = {{-1,0}, {0,1}, {1,0}};
10.                for (int d=0; d<3; d=d+1) {
11.                    if (maze[i+dir[d][0]][j+dir[d][1]]==1)
12.                    {
13.                         count = count + 1;
14.                    }
15.                }
16.            }
17.        }

(7)
下列程式片段執行過程中的輸出為何?

1  int a = 4;
2  …
3  for (int i=0; i<15; i=i+1)/
4  {
5      i = i + a;  //
6      printf ("%d ", i);
7  }

(8)
若宣告一個字元陣列 char str[20] = "I love JAVA.";
該陣列 str[0]、str[5] 、str[13]的值各是多少?
請在陣列表上操作後回答                                                                                                                                               



(9)
假設 x,y,z 為布林 (boolean)變數,且 x= TRUE , y= FALSE , z= TRUE 。
請問下面各布林運算式的真假值依序為何? (TRUE 表真, FALSE 表假 )
1.!( y||z) || x
2.! y || (z || ! x)
3.z || (x && (y || z))
4.(x || x ) && z

(10)
下列程式片段執行過程的輸出為何?
1.          int i, sum, arr[5];
2.          for (int i=0; i<5; i=i+1)
3.              arr = i × 2;   
4.          sum = 0;
5.          for (int i=1; i<5; i=i+2)
6.              sum = sum - arr[i-1] + arr + arr[i+1];
7.          printf ("%d", sum);
附件: 您需要登錄才可以下載或查看附件。沒有帳號?註冊

此帖僅作者可見

TOP

此帖僅作者可見

TOP

返回列表