計程二Practice Problems

Week 2

3/4/2008

 

本學期之練習題和上學期一樣,不用交,但要會做,隨堂小考可能會考,歡迎問老師或助教以及和同學討論。

 

1.     定義一個叫ContactV1C++ structure來記錄手機通訊錄裡的一筆資料,每一筆ContactV1包含姓名及電話號碼,type均為string。寫完整C++程式,宣告3ContactV1變數並用程式碼存入三組姓名及電話號碼,再將這三組資料在螢幕上印出。

2.     利用上題定義的Contact,寫functiongetContact(ContactV1& aFriend),可由鍵盤輸入姓名及電話號碼,再存入aFriend中。寫完整C++程式,宣告3ContactV1並用getContact( )輸入三組姓名及電話號碼,再將這三組資料在螢幕上印出。(想想此function該吃什麼參數進來,又該回傳何種typeHint: 參考課本範例6-1)

3.     續上題,寫functionprintContact(ContactV1 aFriend)aFriend的資料在螢幕上印出來。用此function改寫上題程式,使程式的外部表現和前題相同。

4.     修改上題,將3ContactV1變數改為一個含100ContactV1array變數,用一個loop由鍵盤輸入3組姓名及電話號碼,依序存入array的前三空位,再將它們印出來。換言之,程式的外部表現和前兩題相同,但內部邏輯不同。

5.     上題有一個小問題,array中有100筆資料的空位,如何得知那個位置是有效的資料,那個位置沒有用到?為解決此問題,請修改上題如下:在ContactV1裡增加一個member叫做usedtypebool,把新的structure叫做ContactV2。如果usedtrue,則表示該筆為有效的資料,如果usedfalse,則儲存在內的資料應視為junk。改寫上題程式,一開始時array裡每位置的used均為false,在填入資料到array中時才將used設為true。在輸出array時則只印出有效的資料,junk不印。此程式的外部表現和前三題均相同,但內部邏輯不同。

務必學會如何做這些練習題,還會有後續變化題。

6.     Programming project #1 on p. 260 in the textbook.