
109年特種考試地方政府公務人員考試試題
等 別:四等考試
類 科:資訊處理
科 目:程式設計概要
考試時間:1小時30分 座號:
※注意:禁止使用電子計算器。
不必抄題,作答時請將試題題號及答案依照順序寫在試卷上,於本試題上作答者,不予計分。
本科目除專門名詞、數理公式或程式碼外,應使用本國文字作答。
代號:
頁次:
-
一、下列 C程式的執行結果為何?(15分)
#include <stdio.h>
#include <stdlib.h>
#define X 3
#define Y 4
void funA(int *, int, int), funB(int *, int, int);
int main(void){
int arr[X][Y] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
printf("輸出1:n");
funA(*arr,X,Y);
funB(*arr,X,Y);
printf("輸出2:n");
funA(*arr,X,Y);
system("pause");
return 0;
}
void funA(int *ptr,int x,int y){
int i,j;
for (i=0;i<x;i++){
for(j=0;j<y;j++)
printf("%3d ", *(ptr+i*y+j));
printf("n");
}
}
void funB(int *ptr,int x, int y){
int i,j;
int arr[x][y];
for (i=0;i<x;i++)
for(j=0;j<y;j++)
arr[x-i-1][y-j-1] = *(ptr+i*y+j);
for (i=0;i<x;i++)
for(j=0;j<y;j++)
*(ptr+i*y+j) = arr[i][j];
}

代號:
頁次:
-
二、請依行號解說下列 Python 程式碼與說明此程式的功能為何?(15分)
01 while(True):
02 number=input("請輸入至少三位數的整數值或輸入'q'或'Q'結束程式:")
03 if(number.upper()!='Q'):
04 while(len(number)<3):
05 number=input("輸入值至少須為三位數,請重新輸入:")
06 listA = []
07 for x in number:
08 listA.append(int(x))
09
10 var=0
11 for y in listA[0:len(listA)-1]:
12 var+=y
13 if (var%10==listA[-1]):
14 print(var%10, listA[-1], number, ”is acceptable”)
15 else:
16 print(var%10, listA[-1], number, ”is unacceptable”)
17 else:
18 break

代號:
頁次:
-
三、請使用 C程式語言撰寫一猜數字遊戲程式,此程式必須滿足下列規
定:(25分)
撰寫一函式 int Randomize(int n),可回傳一個隨機產生
介於 1到n間(包含 1與n)的正整數,此正整數即為此遊戲
的答案。
利用上述函式實作一猜數字遊戲,此遊戲開始時先讓使用者輸
入此猜數字遊戲的最大值,程式須確認使用者所輸入的數值必
須大於 20。
使用者每次猜答時,程式必須顯示出是第幾次的猜答。
使用者每次輸入後,程式必須顯示結果,如果猜錯時,程式必須
依使用者的輸入值縮小範圍;當猜對時,就顯示『恭喜你猜對
了!』。
當使用者猜答次數超過 10 次仍未猜中答案時,程式就必須結束
使用者的猜答,並顯示出正確答案。
程式執行範例如下:
請輸入答案的可能最大值(至少必須大於20):15
輸入錯誤!15沒有大於20,請重新輸入!
請輸入答案的可能最大值(至少必須大於20):30
第1次猜答:15
結果為:猜錯了,答案介於 15 與30 之間!
第2次猜答:23
結果為:猜錯了,答案介於 15 與23 之間!
第3次猜答:19
結果為:猜錯了,答案介於 15 與19 之間!
第4次猜答:17
結果為:猜錯了,答案介於 17 與19 之間!
第5次猜答:18
結果為:恭喜你猜對了!
請按任意鍵繼續 . . .

代號:
頁次:
-
四、下列 C程式的執行結果為何?(20分)
#include<stdio.h>
#include<stdlib.h>
int funA(int x), funB(int y);
int main(void){
printf("funA(5)=%d, funB(5)=%dn", funA(5), funB(5));
return 0;
}
int funA(int x){
int i, answer=1;
if(x<1)
return -1;
for(i=1;i<=x;i++)
answer*=(i*2);
return answer;
}
int funB(int y){
if(y<1)
return -1;
else if(y==1)
return 3;
else
return 3*y + funB(y-1);
}

代號:
頁次:
-
五、請使用 C++,Java 或Python 程式語言為三角形面積計算公式設計一個
名為 HeronFormula 類別,並撰寫一測試程式驗證此類別程式碼的正
確性。此類別須包含:(25分)
三邊長的私有資料 a,b,c。
三邊長 a,b,c 的初始化設定或建構元方法。
inputSide( )公有方法:讓使用者輸入三邊長 a,b,c。此方
法須能確認使用者所輸入的三邊長皆須大於 0,另此方法不須回
傳值。
getAssessResult( )公有方法:判斷三邊長 a,b,c 是否可
以構成三角形。如果可以的話則回傳布林型別
(Boolean)“真”,如果不可以的話則回傳“假”。
getPerimeter( )公有方法:回傳三角形的周長。此方法須呼
叫getAssessResult( )方法,如果回傳值為“真”則回傳三
角形的周長,如果回傳值為“假”則回傳-1。
getArea( )公有方法:回傳三角形的面積。此方法須呼叫
getAssessResult( )方法,如果回傳值為“真”則回傳三角
形的面積,如果回傳值為“假”則回傳-1。三角形面積的 Heron
計算公式為:
,其中
。
程式執行範例如下:
請輸入大於0的三邊長:-3,6,9
輸入錯誤,請重新輸入大於0的三邊長:3,6,9
所輸入的三個整數無法構成三角形
繼續玩嗎?若想繼續玩,請按'y'或'Y':y
請輸入大於0的三邊長:3,4,5
周長等於:12
面積等於:6.0
繼續玩嗎?若想繼續玩,請按'y'或'Y':n