調查局三等申論題
109年
[電子科學組] 計算機概論
第 一 題
📖 題組:
請回答下列問題: (包含 Figure-1 與 Figure-2 程式碼) Figure-1: #include
#include
int f(int p, int q);
int main()
{
int a, n, c;
scanf("%d,%d", &a, &n);
c = f(a, n);
printf("c = %d", c);
system("pause");
return 0;
}
int f(int p, int q)
{
if(q != 0)return p*f(p, q-1);
else return 1;
}
Figure-2:
#include
#include
int main(void)
{
char e = 0x3c;
char f = 0x03;
char r;
r= ~e;
printf("%d\n", r & 0xff);
printf("%d\n",(f<<2));
system("PAUSE");
return 0;
}
請回答下列問題: (包含 Figure-1 與 Figure-2 程式碼) Figure-1: #include
📝 此題為申論題,共 2 小題
小題 (一)
下列 Figure-1的 C 程式的功用是什麼?如果執行該程式,且輸入兩個整數依序是2及8,則輸出的結果是什麼?(15分)
思路引導 VIP
面對遞迴程式題,首先應辨識出「終止條件(Base Case)」與「遞迴呼叫(Recursive Step)」。將抽象的程式碼轉化為數學遞迴關係式(如本題為 p * p^(q-1)),即可洞悉其核心功用為指數運算,再將具體數值逐層代入展開推導即可得分。
小題 (二)
如果執行 Figure-2的 C 程式,則輸出的結果是什麼?(10分)
思路引導 VIP
本題測驗位元運算(Bitwise operations)與 C 語言的型態提升(Integer Promotion)。解題時需先將十六進位轉為二進位,逐位元執行反相(~)、位移(<<),並特別注意 & 0xff 遮罩的作用是消除字元型態提升為整數時所產生的符號延伸(Sign extension)。