C++面向对象程序设计上机考试题库[1](9)

2019-08-29 18:53

return 0;}

4.有一个Time类,包含数据成员minute(分)和sec(秒),模拟秒表,每次走一秒,满60秒进一分钟,此时秒又从0开始算。要求输出分和秒的值,且对后置自增运算符的重载。

#include using namespace std; class Time {public:

Time(){minute=0;sec=0;}

Time(int m,int s):minute(m),sec(s){} Time operator++();

Time operator++(int);

void display(){cout<

Time Time::operator++() {if(++sec>=60) {sec-=60; ++minute;} return *this;}

Time Time::operator++(int) {Time temp(*this); sec++;

if(sec>=60) {sec-=60; ++minute;}

return temp; } int main()

{Time time1(34,0),time2(35,0); for (int i=0;i<61;i++)

{++time1; time1.display(); } for (int j=0;j<61;j++)

{time2++; time2.display(); } return 0;}

5.定义一个基类Student(学生),在定义Student类的公用派生类Graduate(研究生),用指向基类对象的指针输出数据。为减少程序长度,在每个类中只设很少成员。学生类只设num(学号),name(姓名)和score(分数)3个数据成员,Gradute类只增加一个数据成员pay(工资)。具体初始化数据自己设定。 #include #include using namespace std; class Student {public:

Student(int,string,float); void display();

【第 41 页 共 48 页】

private: int num;

string name; float score; };

Student::Student(int n,string nam,float s) {num=n; name=nam; score=s; }

void Student::display()

{cout<

Graduate(int,string,float,float); void display(); private:

float pay;};

void Graduate::display() {Student::display();

cout<<\ }

Graduate::Graduate(int n,string nam,float s,float p):Student(n,nam,s),pay(p){} int main()

{Student stud1(1001,\

Graduate grad1(2001,\ Student *pt=&stud1; pt->display(); pt=&grad1;

pt->display(); return 0; }

6.分别定义Teacher(教师)类和Cadre(干部)类,采用多重继承方式有这两个类派生出新类Teacher_Cadre(教师兼干部)。要求:

(1)、在两个基类中的包含姓名、年龄、性别、地址、电话、等数据成员。

(2)、在Teacher类中包含数据成员title(职称),在Cadre类中还包含数据成员post(职务),在Teacher_Cadre类中还包含数据成员wages(工资)。

(3)、对两个基类中的姓名、年龄、性别、职称、地址、电话等数据成员用相同的名字,在引用数据成员时制定作用域。

(4)、在类中声明成员函数,在类外定义成员函数 。

(5)、在派生类Teacher_cadre的成员函数show中调用Teacher类中的display函数。输出姓名,年龄,性别,职称,地址,电话,然后再用cout语句输出职务与工资。 #include #include using namespace std;

【第 42 页 共 48 页】

class Teacher {public:

Teacher(string nam,int a,char s,string tit,string ad,string t); void display(); protected:

string name; int age; char sex;

string title; string addr; string tel; };

Teacher::Teacher(string nam,int a,char s,string tit,string ad,string t): name(nam),age(a),sex(s),title(tit),addr(ad),tel(t){ } void Teacher::display()

{cout<<\ cout<<\ cout<<\

cout<<\ cout<<\ cout<<\class Cadre {public:

Cadre(string nam,int a,char s,string p,string ad,string t); void display(); protected: string name; int age; char sex; string post; string addr; string tel; };

Cadre::Cadre(string nam,int a,char s,string p,string ad,string t): name(nam),age(a),sex(s),post(p),addr(ad),tel(t){} void Cadre::display()

{cout<<\ cout<<\ cout<<\ cout<<\ cout<<\ cout<<\

class Teacher_Cadre:public Teacher,public Cadre {public:

Teacher_Cadre(string nam,int a,char s,string tit,string p,string ad,string t,float w);

void show( );

【第 43 页 共 48 页】

private:

float wage; };

Teacher_Cadre::Teacher_Cadre(string nam,int a,char s,string t,string p,string ad,string tel,float w):

Teacher(nam,a,s,t,ad,tel),Cadre(nam,a,s,p,ad,tel),wage(w) {} void Teacher_Cadre::show( ) {Teacher::display();

cout<<\ cout<<\int main( )

{Teacher_Cadre te_ca(\Road,Shanghai\ te_ca.show( ); return 0;}

7.写一个程序,定义抽象类型Shape,由他派生五个类:Circle(圆形),Square(正方形),Rectangle(矩形),Trapezoid(梯形),Triangle(三角形)。用虚函数分别计算几种图形的面积,并求它们的和。要求用基类指针数组,使它的每一个元素指向一个派生类的对象。

#include using namespace std; class Shape {public:

virtual double area() const =0; }; //定义Circle类

class Circle:public Shape {public:

Circle(double r):radius(r){} virtual double area() const {return 3.14159*radius*radius;}; protected:

double radius; }; //定义Rectangle类

class Rectangle:public Shape {public:

Rectangle(double w,double h):width(w),height(h){} virtual double area() const {return width*height;} protected:

double width,height; }; class Triangle:public Shape {public:

Triangle(double w,double h):width(w),height(h){} virtual double area() const {return 0.5*width*height;} protected:

double width,height; }; void printArea(const Shape &s) {cout<

【第 44 页 共 48 页】

{ Circle circle(12.6);

cout<<\ printArea(circle);

Rectangle rectangle(4.5,8.4);

cout<<\ printArea(rectangle);

Triangle triangle(4.5,8.4); cout<<\ printArea(triangle); return 0;}

8. 写一个程序,定义抽象类型Shape,由他派生五个类:Circle(圆形),Square(正方形),Rectangle(矩形),Trapezoid(梯形),Triangle(三角形)。用虚函数分别计算几种图形的面积,并求它们的和。要求用基类指针数组,使它的每一个元素指向一个派生类的对象。

#include using namespace std; class Shape {public:

virtual double area() const =0; };

class Circle:public Shape {public:

Circle(double r):radius(r){} virtual double area() const {return 3.14159*radius*radius;}; protected:

double radius; }; class Square:public Shape {public:

Square(double s):side(s){} virtual double area() const {return side*side;} protected:

double side;};

class Rectangle:public Shape {public:

Rectangle(double w,double h):width(w),height(h){} virtual double area() const {return width*height;} protected:

double width,height; }; class Trapezoid:public Shape {public:

Trapezoid(double t,double b,double h):top(t),bottom(t),height(h){} virtual double area() const {return 0.5*(top+bottom)*height;} protected:

double top,bottom,height; }; class Triangle:public Shape {public:

【第 45 页 共 48 页】


C++面向对象程序设计上机考试题库[1](9).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:3+4基础综合(2015年试卷)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: