复习提纲.docx
- 文档编号:27938206
- 上传时间:2023-07-06
- 格式:DOCX
- 页数:36
- 大小:179.55KB
复习提纲.docx
《复习提纲.docx》由会员分享,可在线阅读,更多相关《复习提纲.docx(36页珍藏版)》请在冰豆网上搜索。
复习提纲
一、编程题
1、编写一个程序,求5个数中的最小的数(数存放在数组中,为简单编程,数据可以定义的时候给出,不用从键盘上输入)。
(数据类型为整形,长整形,双精度)用函数模板实现。
2、编写一个程序,用来求2个或3个正整数中的最大值,要求用函数重载方法实现。
3、用new和delete实现动态分配和撤销空间实现二维数组的输入和输出。
(从键盘上输入)
#include
usingnamespacestd;
intmain()
{
int(*p)[2]=newint[3][2];
for(inti=0;i<3;i++)
{
for(intj=0;j<2;j++)
{
cin>>p[i][j];
}
}
for(i=0;i<3;i++)
{
for(intj=0;j<2;j++)
{
cout<
}
cout< } cout< delete[]p; return0; } 4、考察类的对象数组: 建立一个对象数组,内放5个学生的数据(学号,成绩),用指针指向数组首元素,输出第1,3,5个学生的数据。 (书P306第4题) 描述: 类student: 数据: 学号(intnum);成绩(floatscore)。 函数: 构造函数: 采用参数初始化表的定义 输出函数: display(): 输出学号和成绩 主函数: 定义一个student类的对象数组,里面存放5个学生数据(学号,成绩),用指针指向数组首元素,输出第1,3,5个学生的数据。 #include usingnamespacestd; classstudent { public: student(intn,floats): num(n),score(s){} voiddisplay(); private: intnum; floatscore; }; voidstudent: : display() { cout< } intmain() { studentstud[5]={ student(1001,85), student(1002,80), student(1003,84), student(1004,86), student(1005,88)}; student*p=stud; for(inti=0;i<2;p+=2,i++) { p->display(); } return0; } 5、设计一个整型二维数组类,数据包含: (1)三行四列二维数组, (2)最大值;成员函数包含 (1)实现输入二维数组元素; (2)实现输出二维数组元素(3)实现输出二维数组中的最大值。 要求按下列要求写出各个文件中的源代码。 (1)类的定义放在头文件array2.h中;选用C++HeaderFile classarray_max { public: voidset_value(); voidmax_value(); voidshow_value(); private: intarray[3][4]; intmax; }; (2)类中成员函数定义放在源文件array2.cpp文件中; #include usingnamespacestd; #include"array2.h" voidarray_max: : set_value() { for(inti=0;i<3;i++) { for(intj=0;j<4;j++) { cin>>array[i][j]; } } } voidarray_max: : max_value() { max=array[0][0]; for(inti=0;i<3;i++) { for(intj=0;j<4;j++) { if(array[i][j]>max) max=array[i][j]; } } } voidarray_max: : show_value() { cout<<"max="< } (3)主函数放在源文件main.cpp文件中 #include"array2.h" intmain() { array_maxarrmax; arrmax.set_value(); arrmax.max_value(); arrmax.show_value(); return0; } 6、商品销售某一商品,商店每天公布统一的折扣(discount)。 同时允许销售人员在销售时灵活掌握售价(price),在此基础上,对一次购10件以上者,还可以享受9.8折优惠。 现已知当天3个销售员的销售情况为: 销货员号(num)销货件数(quantity)销货单价(price) 101523.5 1021224.56 10310021.5 请编写程序,计算当日此商品的总销售款sum以及每件商品的平均售价。 要求用静态数据成员和静态成员函数。 程序代码如下: #include usingnamespacestd; classproduct { private: intnum; intquantity; floatprice; staticfloatdiscount; staticfloatsum; staticintn; public: product(intm,intq,floatp): num(m),quantity(q),price(p){} voidtotal(); staticfloataverage(); staticvoiddisplay(); }; floatproduct: : discount=0.05; floatproduct: : sum=0; intproduct: : n=0; voidproduct: : total() {if(quantity<10) {n+=quantity; sum+=quantity*price*(1-discount); } else {n+=quantity; sum+=quantity*price*(1-discount)*0.98; } } floatproduct: : average() { returnsum/n; } voidproduct: : display() { cout< : average()< } intmain() { productp[3]={ product(101,5,23.5), product(102,12,24.56), product(103,100,21.5) }; for(inti=0;i<3;i++) {p[i].total(); } p[i].display(); return0; } 7、定义一个类模板point 该类模板包含数据为x(横坐标),y(纵坐标); 成员函数包含: (1)构造函数: 采用参数的初始化表形式实现,默认值都为0; (2)voidsetxy(): 对x,y进行赋值,通过参数传递。 (3)voidshowxy(): 输出横坐标和纵坐标 (4)getx(): 返回点的横坐标;gety(): 返回点的纵坐标 主函数实现的功能是: 定义一个点的坐标是整形,一个点的坐标的实型的,分别输出两点坐标。 #include usingnamespacestd; template classpoint { public: point(ntypea,ntypeb); voidsetxy(ntypem,ntypen); voidshowxy(); getx(); gety(); private: ntypex,y; }; template point : point(ntypea=0,ntypeb=0): x(a),y(b){} template voidpoint : setxy(ntypem,ntypen) { x=m; y=n; } template voidpoint : showxy() { cout<<"("< } template point : getx() { returnx; } template point : gety() { returny; } intmain() { point p1.showxy(); point p2.showxy(); return0; } 8、声明一个复数类complex,重载运算符“+”,“-”,“*”,“/”,使之能用于复数的加,减,乘,除,运算符重载作为complex类的成员函数,编写程序,分别求两个负数的之和,差,积和商。 #include classcomplex { public: complex(){real=0;imag=0;} complex(doubler,doublei){real=r;imag=i;} complexoperator+(complex&c2); complexoperator-(complex&c2); complexoperator*(complex&c2); complexoperator/(complex&c2); voiddisplay(); private: doublereal; doubleimag; }; voidcomplex: : display() { cout<<"("< } complexcomplex: : operator+(complex&c2) { returncomplex(real+c2.real,imag+c2.imag); } complexcomplex: : operator-(complex&c2) { returncomplex(real-c2.real,imag-c2.imag); } complexcomplex: : operator*(complex&c2) {complexc5; c5.real=(real*c2.real)-(imag*c2.imag); c5.imag=imag*c2.real+real*c2.imag; returnc5; } complexcomplex: : operator/(complex&c2) { complexc6; c6.real=((real*c2.real)+(imag*c2.imag))/(c2.real*c2.real+c2.imag*c2.imag); c6.imag=(imag*c2.real-real*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag); returnc6; } intmain() { complexc1(3,4),c2(5,6),c3,c4,c5,c6; c3=c1+c2; c4=c1-c2; c5=c1*c2; c6=c1/c2; cout<<"c1+c2=";c3.display(); cout<<"c1-c2=";c4.display(); cout<<"c1*c2=";c5.display(); cout<<"c1/c2=";c6.display(); return0; } 9、声明一个Time类,类中包含私有数据hour(时),minute(分),second(秒),公共函数包含: (1)Time(): 无参构造函数,初始化为0; (2)Time(inth,intm,ints): 有参构造函数,赋值; (3)重载+: 采用友元函数 friendTimeoperator+(Time&t1,Time&t2);重载+作为友员函数 (4)voidgettime(): 输出时间 主函数,定义两个时间类对象,t1(8,51,40),t2(4,15,30),求t1+t2的值并且输出。 程序代码如下: #include classTime { public: Time(){hour=0;minute=0;sec=0;} Time(inth,intm,ints): hour(h),minute(m),sec(s){} friendTimeoperator+(Time&t1,Time&t2); voiddisplay(){cout< "< "< private: inthour; intminute; intsec; }; Timeoperator+(Time&t1,Time&t2) { Timet; t.hour=t1.hour+t2.hour; t.minute=t1.minute+t2.minute; t.sec=t1.sec+t2.sec; if(t.sec>=60) {t.minute++; t.sec-=60; } if(t.minute>=60) {t.minute-=60; t.hour++; } returnTime(t.hour,t.minute,t.sec); } intmain() { Timet1(8,51,40),t2(4,15,30),t3; t3=t1+t2; t3.display(); return0; } 10、有两个矩阵a和b,均为2行3列。 求两个矩阵之和。 重载运算符“+”,使之能用于矩阵相加。 如c=a+b。 重载流插入运算符“<<”和流提取运算符“>>”,使之能用于矩阵的输入和输出。 #include classmartix { public: martix(); friendmartixoperator+(martix&,martix&); voidinput(); voiddisplay(); private: intmat[2][3]; }; martix: : martix() {for(inti=0;i<2;i++) { for(intj=0;j<3;j++) { mat[i][j]=0; } } } martixoperator+(martix&a,martix&b) {martixc; for(inti=0;i<2;i++) { for(intj=0;j<3;j++) { c.mat[i][j]=a.mat[i][j]+b.mat[i][j]; } } returnc; } voidmartix: : input() { cout<<"inputvaluesofmartix: "< for(inti=0;i<2;i++) for(intj=0;j<3;j++) cin>>mat[i][j]; } voidmartix: : display() { for(inti=0;i<2;i++) { for(intj=0;j<3;j++) { cout< } cout< } } intmain() {martixa,b,c; a.input(); b.input(); cout< "< a.display(); cout< "< b.display(); c=a+b; cout< "< c.display(); return0; } 11、设计一个多重继承,实现输出圆桌的高度、颜色和面积。 父类为圆类circle和桌子类table,派生出圆桌类roundtable。 其中圆类circle中包含数据半径,实现数据初始化和求圆的面积;桌子类table中包含数据高度,实现数据初始化和返回桌子高度;圆桌类roundtable包含数据颜色,实现数据初始化、返回圆桌颜色以及输出圆桌信息,包含高度、面积和颜色。 类的设计如下: #include #include usingnamespacestd; classcircle { public: circle(doubler) { radius=r; } voidgetarea() { cout<<3.14*radius*radius< } protected: doubleradius; }; classtable { public: table(doubleh) { height=h; } doublegetheight() { returnheight; } protected: doubleheight; }; classroundtable: publiccircle,publictable { public: roundtable(doubler,doubleh,stringc): circle(r),table(h) {color=c;} voiddisplay() {cout<<"面积: "; getarea(); cout<<"高度: "; cout< cout<<"颜色: "; cout< } private: stringcolor; }; intmain() { roundtablero(3,5,"红"); ro.display(); return0; } 12、设计一个虚继承,实现输出沙发床的面积、高度、颜色、品牌以及沙发床的功能。 父类为沙发类sofa和床类bed,派生出沙发床类sofabed,沙发类sofa和床类bed共同的数据为长度和宽度。 其中沙发类sofa中包含数据颜色、实现数据初始化和输出沙发的功能;床类bed包含数据高度,实现数据初始化和输出床的功能;沙发床类sofabed中包含数据品牌,输出沙发床面积、高度、颜色和品牌以及输出沙发床功能。 #include #include usingnamespacestd; classN { public: N(doublel,doublew) {length=l;width=w;} protected: doublelength; doublewidth; }; classbed: virtualpublicN {public: bed(doublel,doublew,doubleh): N(l,w) { height=h; } doublebedarea() { returnlength*width; } voidsleep() { cout<<"bedisforsleeping! "< } protected: doubleheight; }; classsofa: virtualpublicN {public: sofa(doublel,doublew,stringc): N(l,w) { color=c; } voidwatchingTV() { cout<<"sofaisforWatchingTV! "< } protected: stringcolor; }; classsofabed: publicbed,publicsofa { public: sofabed(doublel,doublew,doubleh,stringc,stringb): N(l,w),bed(l,w,h),sofa(l,w,c) { band=b; } voiddisplay() { cout<<"面积"< } voidgonneng() { sleep(); watchingTV(); } private: stringband; }; intmain() { sofabeds(10.2,8.6,4.3,"红","艾尔"); s.display(); s.gonneng(); return0; } 13、编写一个程序,实现如下功能: 基类为point类,数据为点的横、纵坐标,实现数据初 始化、返回横、纵坐标,对流插入运算符重载输出点的信息;派生类为line类,数据包含: 从点类继承的线的起始坐标,基类的子对象(线的终点坐标),线的颜色,实现数据初始化、对流插入运算符重载输出线的信息(包含点的起始和终点坐标,线的距离和颜色;point类和line类中均有计算距离的函数。 输出点和线的信息,以及利用多态性实现输出点和线的距离。 #include #include #include classpoint { public: point(inta,intb): x(a),y(b){} intgetx(){returnx;} intgety(){returny;} virtualdoubledistance(){return0.0;} friendostream&operator<<(ostream&,point&);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 复习 提纲