三、綜合應(yīng)用題
使用VC6打開考生文件夾下的工程kt13_3。此工程包含一個(gè)kt13_3.cpp,其中定義了類Person,但該類的定義并不完整。請(qǐng)按要求完成下列操作,將程序補(bǔ)充完整。
。1)定義類Person的私有數(shù)據(jù)成員forename、surname和money,forename和surname都是char型的指針數(shù)據(jù),money是double型的數(shù)據(jù)。請(qǐng)?jiān)谧⑨尅?/**1**”之后添加適當(dāng)?shù)恼Z句。
。2)完成類Person的帶三個(gè)參數(shù)的構(gòu)造函數(shù)Person(char*f,char*s,doublem),分別為forename和surname申請(qǐng)新的空間來存儲(chǔ)參數(shù)f和s指針指向的內(nèi)容,注意空間的大小,最后把參數(shù)m的值賦給money,請(qǐng)?jiān)谧⑨尅?/**2**”之后添加適當(dāng)?shù)恼Z句。
(3)完成類Person的析構(gòu)函數(shù)的定義,把forename和surname指向的空間釋放,請(qǐng)?jiān)谧⑨尅?/**3**”之后添加適當(dāng)?shù)恼Z句。
。4)完成類Person的成員函數(shù)display的定義,使其以格式"fornamesurnamehasmoney"的形式輸出內(nèi)容,請(qǐng)?jiān)谧⑨尅?/**4**”之后添加適當(dāng)?shù)恼Z句。
注意:除在指定位置添加語句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。
輸出結(jié)果如下:
RichardBerkhas1000.56
Pressanykeytocontinue
源程序文件kt13_3.cpp清單如下:
#include<iostream.h>
#include<string.h>
classPerson
{ private:
//**1**
doublemoney;
public:
Person(char*f,char*s,doublem);
~Person();
voiddisplay(); };
Person::Person(char*f,char*s,doublem)
{ //**2**
strcpy(forename,f);
surname=newchar[strlen(s)+1];
strcpy(surname,s);
money=m; }
Person::~Person()
{ //**3** }
voidPerson::display()
{ //**4** }
voidmain()
{ Personp("Richard","Berk",1000.56);
p.display(); }
【參考答案】
(1)char *forename;
char *surname;
。2)forename = new char[strlen(f)+1];
。3)delete []forename;
delete []surname;
。4)cout<<forename<<" "<<surname<<" has "<<money<<endl;
【試題解析】
主要考查類的定義和字符指針的動(dòng)態(tài)空間申請(qǐng)和釋放。(2)中new關(guān)鍵字是動(dòng)態(tài)申請(qǐng)空間,里面使用了函數(shù)strlen,該函數(shù)是返回參數(shù)字符串的長(zhǎng)度,之所以加一是要加入字符串結(jié)尾標(biāo)志,這一點(diǎn)考生切記。(3)中delete是釋放動(dòng)態(tài)內(nèi)存的關(guān)鍵字,釋放一位數(shù)組占用的內(nèi)存格式是先寫[],之后是指針名,括號(hào)內(nèi)不寫數(shù)組的大小。
相關(guān)推薦:計(jì)算機(jī)等級(jí)考試二級(jí)C++模擬試題15套(上機(jī))北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |