return 0;}
4.有一个Time类,包含数据成员minute(分)和sec(秒),模拟秒表,每次走一秒,满60秒进一分钟,此时秒又从0开始算。要求输出分和秒的值,且对后置自增运算符的重载。
#include
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 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 【第 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 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 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 页】