您好,欢迎访问三七文档
C++第四次上机答案1.1)建立一个教师类Teacher,其包含3个私有数据成员:num(工号)、name(姓名)、sex(性别),包含2个公有成员函数:带参构造函数(用于对三个数据成员进行初始化),display函数(输出数据成员)。2)建立一个生日类BirthDate,其包含3个私有数据成员:year(年)、month(月)、day(日),包含3个公有成员函数:带参构造函数(用于对三个数据成员进行初始化),display函数(输出数据成员),change函数(修改生日数据,即将3个数据成员的值改为change函数参数指定的值)。3)建立一个教授类Professor,它是Teacher类的公有派生类,在Teacher类的基础上增加了私有数据生日信息birthday(birthday是BirthDate类的对象),其新增成员函数包含:带参构造函数(对新增的和继承的数据成员初始化),display函数(输出所有数据成员),changebirth函数(将修改生日信息修改为函数参数指定日期)。4)main函数中的操作步骤如下:定义Professor类的对象prof1输出对象prof1的所有数据信息修改prof1的生日信息输出对象prof1的所有数据信息#includeiostream#includestringusingnamespacestd;classTeacher{public:Teacher(int,string,char);voiddisplay();//输出数据private:intnum;//工号stringname;//姓名charsex;//性别};Teacher::Teacher(intn,stringna,chars):num(n),name(na),sex(s){}voidTeacher::display()//输出数据{coutnum:numendl;coutname:nameendl;coutsex:sexendl;}classBirthDate{public:BirthDate(int,int,int);voiddisplay();//输出年、月、日数据voidchange(int,int,int);//修改年、月、日数据private:intyear;//年intmonth;//月intday;//日};BirthDate::BirthDate(inty,intm,intd):year(y),month(m),day(d){}voidBirthDate::display()//输出年、月、日数据{coutbirthday:year'/'month'/'dayendl;}voidBirthDate::change(inty,intm,intd)//修改年、月、日数据{year=y;month=m;day=d;}classProfessor:publicTeacher{public:Professor(int,string,char,int,int,int);voiddisplay();//输出数据voidchangebirth(int,int,int);//修改生日信息private:BirthDatebirthday;//子对象};Professor::Professor(intn,stringna,chars,inty,intm,intd):Teacher(n,na,s),birthday(y,m,d){}voidProfessor::display()//输出数据{Teacher::display();//父子同名函数birthday.display();//输出生日信息}voidProfessor::changebirth(inty,intm,intd)//修改生日信息{birthday.change(y,m,d);}voidmain(){Professorprof1(1001,Wangli,'f',1973,5,10);prof1.display();//调用派生类自己的displaycoutendlendl;prof1.changebirth(1975,10,12);//修改生日信息prof1.display();//调用派生类自己的display}2.写一个程序,定义抽象基类Shape,由它派生出3个派生类:Circle(圆形类,含一个数据成员:半径)、Rectangle(矩形类,含两个数据成员:长、宽)、Triangle(三角形类,含三个数据成员:三条边),用一个函数printArea分别输出以上三者的面积,3个图形的数据在定义对象时给定。法一:#includeiostream#includemath.husingnamespacestd;//定义抽象基类ShapeclassShape{public:virtualdoublearea()=0;//纯虚函数};//定义Circle类classCircle:publicShape{public:Circle(doubler):radius(r){}//构造函数virtualdoublearea()//virtual可以省略{return3.14159*radius*radius;};//定义虚函数private:doubleradius;//半径};//定义Rectangle类classRectangle:publicShape{public:Rectangle(doublelen,doublew):length(len),width(w){}//构造函数virtualdoublearea(){returnlength*width;}//定义虚函数private:doublelength,width;//长与宽};//定义Triangle类classTriangle:publicShape{public:Triangle(doublex,doubley,doublez):a(x),b(y),c(z){}//构造函数virtualdoublearea()//定义虚函数{doubles=(a+b+c)*0.5;returnsqrt(s*(s-a)*(s-b)*(s-c));}private:doublea,b,c;//三条边};//输出面积的函数voidprintArea(Shape&s)//基类的引用对象作为形参,实参可以是子类对象。引用对象比指针变量节约空间{couts.area()endl;}//area是虚函数,调用的是实参对象所属类的areaintmain(){Circlecircle(12.6);//建立Circle类对象circlecoutareaofcircle=;printArea(circle);//输出circle的面积Rectanglerectangle(4.5,8.4);//建立Rectangle类对象rectanglecoutareaofrectangle=;printArea(rectangle);//输出rectangle的面积Triangletriangle(4,8,5);//建立Triangle类对象coutareaoftriangle=;printArea(triangle);//输出triangle的面积return0;}法二:#includeiostream#includemath.husingnamespacestd;//定义抽象基类ShapeclassShape{public:virtualvoidprintArea()=0;//纯虚函数};//定义Circle类classCircle:publicShape{public:Circle(doubler):radius(r){}//构造函数virtualvoidprintArea()//virtual可以省略{cout3.14159*radius*radiusendl;};//定义虚函数private:doubleradius;//半径};//定义Rectangle类classRectangle:publicShape{public:Rectangle(doublelen,doublew):length(len),width(w){}//构造函数virtualvoidprintArea(){coutlength*widthendl;}//定义虚函数private:doublelength,width;//长与宽};//定义Triangle类classTriangle:publicShape{public:Triangle(doublex,doubley,doublez):a(x),b(y),c(z){}//构造函数virtualvoidprintArea()//定义虚函数{doubles=(a+b+c)*0.5;coutsqrt(s*(s-a)*(s-b)*(s-c))endl;}private:doublea,b,c;//三条边};intmain(){Shape*pc;//基类指针变量Circlecircle(12.6);//建立Circle类对象circlepc=&circle;coutareaofcircle=;pc-printArea();//输出circle的面积Rectanglerectangle(4.5,8.4);//建立Rectangle类对象rectanglepc=&rectangle;coutareaofrectangle=;pc-printArea();//输出rectangle的面积Triangletriangle(4,8,5);//建立Triangle类对象pc=▵coutareaoftriangle=;pc-printArea();//输出triangle的面积return0;}自主上机题目:2015年C++A卷的第五题(编程题)。定义具有继承关系的点类Point和圆类Circle:(1)Point类具有(x,y)坐标对;(2)Circle类为Point类的子类,它本身又增加了半径radius、求周长getPeri()和求面积getArea()的成员函数;(3)为Point类和Circle类添加构造函数;(4)在主函数中创建圆A,其圆心坐标为(5,7),半径为2,计算并输出圆A的周长和面积。#includeiostream.h#definePI3.14classPoint{floatx,y;public:Point(floatxp=0,floatyp=0):x(xp),y(yp){}};classCircle:publicPoint{floatradius;//半径public:Circle(floatx,floaty,floatr):Point(x,y),radius(r){}floatgetPeri();//求周长floatgetArea();//求面积};floatCircle::getPeri()//求周长{return2*PI*radius;}floatCircle::getArea()//求面积{returnPI*radius*radius;}voidmain(){CircleA(5,7,3);coutA的周长为:A.getPeri()endl;coutA的面积为:A.getArea()endl;}
本文标题:第4次上机答案
链接地址:https://www.777doc.com/doc-2156240 .html