(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); |