c++上机考试练习题_第1页
c++上机考试练习题_第2页
c++上机考试练习题_第3页
c++上机考试练习题_第4页
c++上机考试练习题_第5页
已阅读5页,还剩5页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第16周面向对向上机实验练习题类和对象已知一个名为Complex的复数类,这个类包含:(1)私有成员:实部、虚部,且均为int型(2)公有的带默认形参值的构造函数、复制构造函数(3)公有成员函数Display,其作用为显示复数要求:(1)实现满足上述属性和行为的Complex类定义;(2)设计函数AddComplex,函数AddComplex功能为实现两个复数相加,要求该函数的形参为复数类的常引用;(3)保证如下主函数能正确运行,intmain(){Complexc0(2,-3);Complexc1(c0);cout<<"c1is:";c1.Display();Complexc2(3,4);cout<<"c2is:";c2.Display();Complexc3;c3=AddComplex(c1,c2);cout<<"c3is:";c3.Display(); return0;}且输出结果如下:c1is:2-3ic2is:3+4ic3is:5+1i已知表示点的类CPoint和表示线段的CLine类,类CPoint包含:(1)表达点位置的私有数据成员x,y(2)构造函数及复制构造函数类CLine包含:(1)两个CPoint的点对象(该两点分别为线段的两个端点)(2)构造函数(提示:构造函数中用初始化列表对内嵌对象进行初始化)(3)公有成员函数GetLen,其功能为返回线段的长度(4)类属性成员count用于记录创建的CLine类对象的个数,及用于显示count值的ShowCount函数;要求:(1)实现满足上述属性和行为的CPoint类及CLine类定义;(2)保证如下主函数能正确运行,#include<iostream>usingnamespacestd;intmain(){ CPointp1(1,1); CPointp2(4,5); CLineline1(p1,p2); cout<<"thelengthofline1is:"<<line1.GetLen()<<endl; CPointp3(0,0); CLineline2(line1); cout<<"Thecountoflineis:"<<CLine::ShowCount()<<endl;return0;}且输出结果如下:Thelengthofline1is:5ThecountofLineis:2继承、派生已知Point类的声明如下:#include<iostream>usingnamespacestd;//Point类的声明classPoint {public: //外部接口 Point();//构造函数Point(intxx,intyy);//构造函数 Point(Point&p); //拷贝构造函数 intGetX()const{returnX;} intGetY()const{returnY;}voidmove(intnewx,intnewy){x=newx;y=newy;}~Point(){}private: //私有数据 intX,Y;};classArrayofPoints{Point&element(intindex){assert(index>=0&&index<size);//size为数组大小returnpoints[index];}};//计算任意两点之间的距离intL1Distance(intx1,inty1,intx2,inty2){return(abs(x1-x2)+abs(y1-y2));}请给出Point类的构造函数,并参照下图创建动态数组类ArrayofPoints,实现主函数。请自行补充需要的头文件。//主程序intmain(){intcount; cout<<”PleaseenterthecountofPoints”<<endl;cin>>count;ArrayofPointsArrPoints(count);ArrPoints.element(0).move(5,10);ArrPoints.element(1).move(15,20); cout<<”Thedistanceis”<<endl;cout<<L1Distance(ArrPoints.element(0).GetX(),ArrPoints.element(0).GetY(),ArrPoints.element(1).GetX(),ArrPoints.element(1).GetY()<<endl;}参考程序:#include<iostream>#include<math.h>#include<assert.h>usingnamespacestd;classPoint {public: //外部接口 Point();//构造函数 Point(intxx,intyy);//构造函数 Point(Point&p); //拷贝构造函数 intGetX()const{returnx;} intGetY()const{returny;} voidmove(intnewx,intnewy){x=newx;y=newy;} ~Point(){}private: //私有数据 intx,y;};Point::Point(){ x=0;y=0;}Point::Point(intxx,intyy){ this->x=xx; this->y=yy;}classArrayofPoints{public: ArrayofPoints(intsize){ this->size=size; } ~ArrayofPoints(){ } Point&element(intindex){assert(index>=0&&index<size);//size为数组大小Pointpoints[index];returnpoints[index]; }private: intsize;};intL1Distance(intx1,inty1,intx2,inty2){return(abs(x1-x2)+abs(y1-y2));}intmain(){ intcount; cout<<"PleaseenterthecountofPoints"<<endl; cin>>count; ArrayofPointsArrPoints(count); ArrPoints.element(0).move(5,10); ArrPoints.element(1).move(15,20); cout<<"Thedistanceis"<<endl; cout<<L1Distance(ArrPoints.element(0).GetX(),ArrPoints.element(0).GetY(),ArrPoints.element(1).GetX(),ArrPoints.element(1).GetY())<<endl; return0;}定义一个Date类,有整型数据成员year,month,day,成员函数Display用于显示日期;定义DateTime类,从Date类公有派生而来,在DateTime类中增加数据成员hour,minute,second,设计一个成员函数Display用于显示日期时间信息。参考程序:#include<iostream>usingnamespacestd;classData{public: Data(intyear,intmonth,intday){ this->year=year; this->month=year; this->day=day; cout<<"Data构造函数被调用!"<<endl; } voidDisplay(){ cout<<year<<"年"<<month<<"月"<<day<<"日"<<endl; } intyear,month,day;};classDataTime:publicData{public: DataTime(inta,intb,intc,intd,inte,intf):Data(a,b,c){ this->hour=d; this->minute=e; this->second=f; } voidDisplay(){ cout<<year<<"年"<<month<<"月"<<day<<"日"<<hour<<"时"<<minute<<"分"<<"秒"<<endl; }private: inthour,minute,second;};intmain(){ //DataA(2016,11,24); //A.Display(); DataTimea(2016,11,24,13,50,59); a.Display(); return0;}如图所示:设计图示中的4个类,其中:电脑类(Computrer)具有frequency,os,ram(CPU主频,操作系统,内存容量)等属性,相机(Camera)具有pixel(像素数,如500万,800万等),从电脑和相机共同派生出智能手机,智能手机(Smobilephone)具有size(屏幕尺寸,如4.5寸,5.5寸等)。家电(Appliance)拥有brand,price(品牌,价格)等属性。构造智能手机类的一个实例,并通过该实例调用其成员show()显示其继承自基类和自身的所有属性信息。参考程序:#include<iostream>usingnamespacestd;classAppliance{public: Appliance(charc,floatd){ this->brand=c; this->price=d; } ~Appliance(){ } charGetbrand(){returnbrand;} floatGetprice(){returnprice;}private: charbrand; floatprice;};classComputer:virtualpublicAppliance{public: Computer(floata,charb,intc,chard,floate):Appliance(d,e){ this->frequency=a; this->os=b; this->ran=c; } ~Computer(){ } floatGetfrequency(){ returnfrequency; } charGetos(){ returnos; } intGetran(){ returnran; }private: floatfrequency; charos; intran; };classCamera:virtualAppliance{public: Camera(inta,chard,floate):Appliance(d,e){ this->pixel=a; } intGetpixel(){ returnpixel; }private: intpixel;};classSmobilephone:publicComputer,publicCamera{public: Smobilephone(floata,charb,intc,chard,floate):Appliance(d,e),Computer(a,b,c,d,e),Camera(c,d,e){ this->a=a; } voidshow(){ chara=Getbrand(); cout<<"品牌:"<<a<<endl; floatb=Getprice(); cout<<"价格:"<<b<<"元"<<endl; floatc=Getfrequency(); cout<<"频率:"<<c<<"KHz"<<endl; chard=Getos(); cout<<"操作系统:"<<d<<endl; inte=Getran(); cout<<"内存:"<<e<<endl; intf=Getpixel(); cout<<"像素:"<<f<<"万"<<endl; } private: floata;};intmain(){ Smobilephonea(2.5,'a',5,'e',3.59); a.show(); return0;}运算符重载多态模板已知一个名为Complex的复数类,这个类包含:(1)私有成员:实部、虚部,且均为int型(2)公有的带默认形参值的构造函数(3)以类的成员函数方式重载+运算符和*运算符(4)以友元函数方式重载<<运算符(5)使得以下主函数正确运行并得到以下结果intmain(){Complexc1(1,2);Complexc2(3,4);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论