三、綜合應(yīng)用題
使用VC6打開考生文件夾下的工程kt7_3,此工程包含一個源程序文件kt7_3.cpp,其中含有一個類Circle的定義,但該類的定義并不完整。請按要求完成下列操作,將類Circle的定義補充完整。
(1)為類Circle增加一個構(gòu)造函數(shù),該函數(shù)有一個參數(shù),并在構(gòu)造時將該參數(shù)值賦給成員radius。將該函數(shù)實現(xiàn)為一個非內(nèi)聯(lián)函數(shù),并且使用參數(shù)列表的方式將類成員賦值。請在注釋“//**1**”之后添加適當(dāng)?shù)恼Z句。
(2)為類Circle增加一個成員函數(shù)print(),使得可以輸出有關(guān)圓的信息,比如下列程序
Circlec;
c.SetRadius(5);
c.Print();
將輸出:Thecirclehasradiusof5!
請在注釋“//**2**”之后添加適當(dāng)?shù)恼Z句。
(3)完成友元函數(shù)voidCompareR(Circle*c1,Circle*c2)的定義,在屏幕中輸出c1與c2比較radius大小結(jié)果,要求使用if-else結(jié)構(gòu)完成。請在注釋“//**3**”之后添加適當(dāng)?shù)恼Z句。
輸出結(jié)果如下:
Thecirclehasradusof5!
Thecirclehasradiusof10!
c1 注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。 源程序文件kt7_3.cpp清單如下: #include classCircle{ public: Circle():radius(5){} //**1** voidSetRadius(intr){radius=r;} intGetRadius(){returnradius;} //**2** friendvoidCompareR(Circle*c1,Circle*c2); private: intradius;}; voidCompareR(Circle*c1,Circle*c2) {//**3** cout<<"c1>c2"< else if((c1->GetRadius())==(c2->GetRadius())) cout<<"c1=c2"< else if((c1->GetRadius())<(c2->GetRadius())) cout<<"c1 voidmain() {Circlec1; c1.SetRadius(5); c1.Print(); Circlec2(10); c2.Print(); CompareR(&c1,&c2);} 【參考答案】 (1)Circle(int rad):radius(rad){} (2)void Print(){cout<<"The circle has radius of "< (3)if ((c1->GetRadius())>(c2->GetRadius())) 【試題解析】 本題考查成員函數(shù)的定義與實現(xiàn),友元函數(shù),if分支語句等知識點。友元函數(shù)的類體外的定義與一般函數(shù)一樣,其中if-else的使用,else總是與其最近的那個if配對使用的,書寫時最好使用縮進格式,將配對的if-else對齊,以免出錯。 編輯推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |