高考申論題
109年
[資訊處理] 程式語言
第 三 題
三、下面的C程式印出的結果為何?(作答必須解釋計算過程,只寫答案而未加解釋,只能得部分分數。)(25分)
# include
int foo1(int p){
if (p >= 90) return(foo1(foo1(p-11)));
return(p+10);
}
int foo2(int p){
if (p < 91) return(foo2(p+11));
return(p);
}
int foo(int p){
return(foo1(foo2(p)));
}
int main(int argc, char **argv){
int q;
q = 65;
printf("foo(%d)= %d.\n", q, foo(q));
q = 83;
printf("foo(%d)= %d.\n", q, foo(q));
q = 95;
printf("foo(%d)= %d.\n", q, foo(q));
q = 100;
printf("foo(%d)= %d.\n", q, foo(q));
q = 142;
printf("foo(%d)= %d.\n", q, foo(q));
return(0);
}
📝 此題為申論題
思路引導 VIP
- 拆解函數邏輯:
foo2(p):這是一個簡單的循環/遞迴。只要p < 91,就一直加 11。目標是找出第一個大於等於 91 的數值。