
110 年特種考試地方政府公務人員考試試題
※注意:禁止使用電子計算器。
不必抄題,作答時請將試題題號及答案依照順序寫在試卷上,於本試題上作答者,不予計分。
本科目除專門名詞或數理公式外,應使用本國文字作答。
代號:
頁次:
-
一、請問下列程式碼之輸出結果為何?(25 分)
#include <stdio.h>
#include <stdlib.h>
int function(int n)
{if (n < 10)
return n;
int sum = 0;
while (n > 0)
{sum += n % 10;
n /= 10;
}
return function(sum);
}
int main()
{int n = 12345;
int output;
output = function(n);
printf("output%dn", output);
return 0;
}
二、假設一堆疊(Stack)的推入(Push)順序為:123、234、345、456、567,
並且途中可以隨意彈出(Pop)取值,則下列彈出(Pop)取值之順序有
無可能出現?
345、567、456、234、123
若有可能,請依序將推入(Push)與彈出(Pop)的步驟列出。若無可能,
請解釋原因為何?(25 分)

代號:
頁次:
-
三、請問下列程式碼之輸出結果以及該程式碼的目的為何?(25 分)
#include "stdio.h"
int f(int a, int b) {
if(a%b == 0) return b;
return f(b,a%b);
}
int main(void) {
printf("f(21,9) = %dn",f(21,9));
printf("f(6,44) = %dn",f(6,44));
return 0;
}
四、請問下列程式碼之輸出結果為何?(25 分)
#include <stdio.h>
#include <stdlib.h>
void function(int a, int b)
{printf("a=%d,b=%dn", a, b);
for (i = 0; i < 8; i++)
{if (!(a > 10 && b < 10) && (a <= 10 || b >= 10))
{a = a + 1;
b = b - 1;
printf("a=%d,b=%dn", a, b);
}
}
}
int main()
{int x = 5;
int y = 10;
function(x, y);
return 0;
}