Point(int x,int Y){Point::x=x; Point::y=y;} int getx(){return x;} int gety(){return Y;} };
class Circle:public Point {
int r; public:
Circle(int x,int y,int r):Point(x,y) {
Circle::r=r; }
int getr(){return r;} };
void main() {
Circle c(4,5,3); Point *p=&c;
cout<<\圆半径:\.getr()<<\;
cout<<\圆心:(\ <<\,\ <<\}
30.
圆和三角形都需要输入三个数据,设计一个类Object管理这三个数据,从此派生出圆类Circle和三角形类Triangle,并求各自的面积。 【知识点】:5.1 5.2 【参考分】:30分 【难易度】:B 【答案】:
#include
protected: int x,y,z; public:
void getdata() {
cout<<\ 输入x y z值:\; cin>>x>>y>>z; } };
class Triangle:public Object {
public:
void getdata() {
cout<<\三角形三边长\ Object::getdata(); }
double area() {
double d=(x+y+z)/2;
double s=sqrt(d*(d-x)*(d-y)*(d-z)); return s; }
void disp() {
cout<<\ 三角形:三边长分别为\,\,\ } };
class Circle:public Object {
public:
void getdata() {
cout<<\圆=圆心(x,y)半径z\; Object::getdata(); }
double area() {
double s=z*z*3.1415; return s; }
void disp() {
cout<<\ 圆:圆心(\,\半径为\ } };
void main() {
Triangle t; Circle c; t.getdata(); c.getdata();
cout<<\输出结果;< t.disp(); cout<<\面积为\ c.disp(); cout<<\面积为\} 31. 设计一个建筑物基类Building,由它派生出宿舍类Hostel和教学楼类Classroom, 前者包括楼名、总层数、住户数、总住人数和总面积,后者包括楼名、总层数、教室数、灭火器数和总面积。 【知识点】:5.1 5.2 【参考分】:20分 【难易度】:B 【答案】: #include protected: char bname[10]; //名称 int fs; //层数 int rs; //教室个数或住户数 int es; //灭火器数或总人数 double as; //总面积 public: Building(char b[],int f,int r,int e,int a) { strcpy(bname,b); fs=f;rs=r; es=e; as=a; } }; class Hostel:public Building { public: Hostel (char b[],int f,int r,int e,int a):Building(b,f,r,e,a) { } void disp() { cout<<\宿舍名称:\ cout<<\ 总层数: \ < class Classroom:public Building { public: Classroom(char b[],int f,int r,int e,int a):Building(b,f,r,e,a) {} void disp() { cout<<\教学楼名称:” < color<<\ 总层数: \ < }; void main() { Hostel h(\栋\; Classroom r(”5号楼”,5,62,20,6000); h.disp(); r.disp(); } 32. 设计一个人员类Person,包括姓名和衣服、裤子及鞋子的指针,后面的衣服、裤子及鞋子分别设计成类Clothes、Pants和Shoe,它们都是从物品类Object派生的,Object类包括物品类型和颜色数据成员。并用相应的数据进行测试。 【知识点】:3.2 5.1 5.2 5.3 【参考分】:40分 【难易度】:B 【答案】:Clothes、Pants和Shoe三个类(统称为穿着类)都是Object类公共派生的,Person类包含指向这些穿着类的指针,并有一个输出人员姓名和穿着的成员函数。程序如下: #include protected: char color[10]; //物品类型 char type[10]; //颜色 public: Object(){} Object(char *t,char *c) { strcpy(type,t); strcpy(color,c); } }; class Shoe:public Object //鞋子类 { private: friend class Person; public: Shoe(char *t,char *c):Object(t,c){} }; class Clothes:public Object //衣服类 { private: friend c1ass Person; public: Clothes(char *t,char *c):Object(t,c){} }; class Pants:public Object //裤子类 { private: friend class Person; public: Pants(char *t,char *c):Object(t,c){} }; class Person //人员类 { protected: char name[10]; Clothes *myClothes; //指向Clothes对象的指针 Shoe *myShoe; //指向Shoe对象的指针 Pants *myPants; //指向Pants对象的指针 public: Person(char *na) //构造函数 { strcpy(name,na); } void wear(Shoe & aShoe) //穿着鞋子成员函数 { myShoe=&aShoe; } void wear(Clothes & aClothes) //穿着衣服成员函数 { myClothes=&aClothes; } void wear(Pants & aPants) //穿着裤子成员函数 { myPants=&aPants ; } void show() //输出一个人的穿着情况 { cout<<\ 姓名:\ endl; cout<<\ 穿着\ cout< void main() { Person p1(\王华\,p2(\李明\