问题 问答题

使用VC6打开考生文件夹下的工程test7_3,此工程包含一个源程序文件test7_3.cpp,其中含有一个类Circle的定义,但该类的定义并不完整。请按要求完成下列操作,将类Circle的定义补充完整。
(1)为类Circle增加一个构造函数,该函数有一个参数,并在构造时将该参数值赋给成员radius。将该函数实现为一个非内联函数,并且使用参数列表的方式将类成员赋值。请在注释“//**1**”之后添加适当的语句。
(2)为类Circle增加一个成员函数print(),使得可以输出有关圆的信息,比如下列程序
Circle c;
c.SetRadius(5);
c.Print();
将输出:The circle has radius of 5!
请在注释“//**2**”之后添加适当的语句。
(3)完成友元函数void CompareR(Circle *cl,Circle*c2)的定义,在屏幕中输出c1与c2比较radius大小结果,要求使用 if-else结构完成。请在注释“//**3**”之后添加适当的语句。
输出结果如下;
The circle has radus of 5!
The circle has radius of 10!
c1<c2
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件test7_3.cpp清单如下:
#include<iostream.h>
class Circle
public:
Circle():radius(5)
//**1**
void SetRadius(int r) radius=r;
int GetRadius() return radius;
//**2**
friend void CompareR(Circle *c1,Circle*C2);
private:
int radius;
;
void CompareR(Circle *c1,Circle *C2)

//**3**
cout<<"c1>c2"<<endl;
else
if((c1->GetRadius())==(c2->GetRadius()))
cout<<"c1=c2"<<endl;
else
if((c1->GetRadius())<(c2->GetRadius()))
cout<<"c1<c2"<<endl;

void main()

Circle c1;
c1.SetRadius(5);
C1.Print();
Circle c2(10);
c2.Print();
CompareR(&c1,&c2);

答案

参考答案:
(1)
Circle(int rad):radius(rad){}
(2)
void Print(){cout<<"The circle has radius of"<<radius<<"!\n";}
(3)
if((c1->GetRadius())>(c2->GetRadius()))

解析: 本题考查成员函数的定义与实现,友元函数,if分支语句等知识点。友元函数的类体外的定义与一般函数一样,注意(3)中if-else的使用,else总是与其最近的那个if配对使用的,书写时最好使用缩进格式,将配对的if-else对齐,以免出错。

单项选择题
单项选择题