C 第7次作业

发布 2023-05-16 13:26:28 阅读 2496

实验七: 继承与派生(一)

1. 定义一个shape基类,在此基础上派生出rectangle和circle,二者都有getarea()函数计算对象的面积。使用rectangle类创建一个派生类square。

实验分析:首先定义出shape类,然后定义getarea函数,然后派生出rectangle和circle,最后在main函数中输出各项结果。

程序**:#include

using namespace std;

const double pi=3.1415926;

class shape

public:

double getarea()

void getsquare()

int main()

rectangle *r=new rectangle(6,8);

r->getarea();

circle *c=new circle(4);

c->getarea();

square *s= new square(6,6);

s->getsquare();

delete r;

delete c;

delete s;

实验结果:2. 定义一个哺乳动物mammal类,再由此派生出狗dog类,定义一个dog类的对象,观察基类与派生类的构造函数与析构函数的调用顺序。

实验分析:本题很简单,了解基类和派生类的构造函数与析构函数的调用顺序即可。

程序**:#include

using namespace std;

class animal

public:

animal(int i) ;

class dog:public animal

public:

dog(int a):animal(a);

int main()

dog obj(1);

return 0;

实验结果:3. 编写一个程序,设计一个汽车类,包含的数据成员有:

车轮个数和车重。小车类car是它的私有派生类,其中包含载人数。卡车类是汽车类的私有派生类,其中包含载人数和载重量。

每个类都有相关数据的输出方法。

实验分析:先定义汽车类,由它派生出car类和truck类将公共的属性和方法放在vehicle类中。

程序**:#include

using namespace std;

class vehicle //定义汽车类。

protected:

int wheels; /车轮数。

float weight; /重量。

public:

vehicle(int wheels,float weight);

int get_wheels();

float get_weight();

void show();

class car:private vehicle //定义小车类。

int passenger_load; /载人数。

public:

car(int wheels,float weight,int passengers=4);

int get_passengers();

void show();

class truck:private vehicle //定义卡车类。

int passenger_load; /载人数。

float payload载重量。

public:

truck(int wheels,float weight,int passengers=2,float max_load=24000.00);

int get_passengers();

float efficiency();

void show();

vehicle::vehicle(int wheels,float weight)

vehicle::wheels=wheels;

vehicle::weight=weight;

int vehicle::get_wheels()

return wheels;

float vehicle::get_weight()

return weight/wheels;

void vehicle::show()

cout <<车轮:" wheels <<个"

cout <<重量:" weight <<公斤"

car::car(int wheels, float weight,int passengers) :vehicle (wheels, weight)

passenger_load=passengers;

int car::get_passengers ()

return passenger_load;

void car::show()

truck:: truck(int wheels, float weight,int passengers, float max_load):vehicle(wheels,weight)

passenger_load=passengers;

payload=max_load;

int truck::get_passengers()

return passenger_load;

float truck::efficiency()

return payload/(payload+weight);

void truck::show()

cout <<车型:卡车"

vehicle:: show ()

cout <<载人:" passenger_load <<人"

cout <<效率:" efficiency() endl;

cout <

void main ()

car car1(4,2000,5);

truck tru1(10,8000,3,340000);

cout <<输出结果"

car1. show ()

tru1. show ()

实验结果:4. 设计一个圆类和一个桌子类,另设计一个圆桌类,他们是从前两个类派生的,要求输出一个圆桌的高度、面积和颜色等数据。

实验分析:circle类包含私有数据成员radius和求圆面积的成员函数getarea();table类包含私有数据成员height和返回高度的成员函数getheight()。roundtable类继承所有上述类的数据成员和成员函数,添加了私有数据成员color和相应的成员函数。

程序**:#include<>

#include<>

class circle

double radius;

public:

circle(double r)

double getarea()

class table

double height;

public:

table(double h)

double getheight()

class roundtable : public table,public circle

char *color;

public:

roundtable(double h, double r, char c)circle (r) ,table (h)

color=new char[strlen(c)+1];

strcpy (color, c);

char *getcolor()

void main()

roundtable rt(0.9,1.8,"白色");

cout <<圆桌属性数据:" endl;

cout <<高度:" 米"

C语言第7次作业

单选题 1 若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系 的表达式为。a.a 0 b.ac.a 0 d.a 0 学生答案 c 参 d 2 若变量都已经说明,则以下程序段输出为 a 10 b 50 c 30 if a b a b b c c a printf a db dc d...

c 第7章作业

7 10定义object类,有weight属性及相应的操作函数,由此派生出box类,增加height和width属性及相应的操作函数,声明一个box对象,观察构造函数与析构函数的调用顺序。解 include class object int getweight void setweight int ...

第7次作业

1题目 定义一个函数min,求n个数中的平均值 最小数和其下标,并在主函数中打印平均值 最小数和下标。格式 int min int s,int n,double er 注意 如有多个最小值,以第一个为准。输出结果见图 样张。jpg include using namespace std progra...