
102年特種考試地方政府公務人員考試試題 代號:34160
等 別: 三等考試
類 科: 資訊處理
科 目: 程式語言
考試時間: 2 小時 座號:
※注意:
禁止使用電子計算器。
不必抄題,作答時請將試題題號及答案依照順序寫在試卷上,於本試題上作答者,不予計分。
(請接背面)
全一張
(
)
一、A君寫了以下的物件導向程式碼:
class employee : public listcontainer {
public:
string getName();
Address GetAddress();
PhoneNumber getWorkPhone() ;
bool isZipCodeValid(Addrss address);
// given an address, this function check if the address’s zip
// code is valid or not
bool isPhonenumberValid(PhoneNumber phone);
// given a phone number, this function check if the phone no.
// is valid or not.
public:
static string _name ;
static Address addr ;
static PhoneNumber phoneno ;
}
A君寫程式的思維是這樣子的,他想要用 linked list 來儲存姓名、住址以及電話
。尤其是住址的部分,由於需要切割住址內容然後儲存到 linked list 中,所以
他繼承了 listcontainer(系統提供的 list library)。另外 A君實做了幾
個method 來幫忙判定住址與電話號碼的格式是否合法。
請問上述的物件導向程式碼,犯了那一些違反物件導向原則的錯誤?(25 分)
二、以下的 C程式碼需要實作一個 SwapAndAdd function。SwapAndAdd()要達成
的功能是交換兩個變數,然後建立一個新的整數變數,將兩個變數相加存在該變數
之後,回傳新的變數位址讓呼叫端來使用。以下的 main()顯示如何使用這個
SwapAndAdd() function。
int main() {
int x, y, *result ;
x = 100 ;
y = 50 ;
result= SwapAndAdd(......);
// 請填寫參數 x,y 應如何傳遞來使用 SwapAndAdd
printf(“%d %d %d”, x, y,(*result));
}
在這個 main()中,我們會將 x,y 變數作為參數傳到 SwapAndAdd()。如果
SwapAndAdd()實作正確,這個 main()會印出
50 100 150
請以 C語言完成 SwapAndAdd()的程式碼,並且將 main()當中的呼叫參數填入。(25 分)