复习提纲.docx

上传人:b****8 文档编号:27938206 上传时间:2023-07-06 格式:DOCX 页数:36 大小:179.55KB
下载 相关 举报
复习提纲.docx_第1页
第1页 / 共36页
复习提纲.docx_第2页
第2页 / 共36页
复习提纲.docx_第3页
第3页 / 共36页
复习提纲.docx_第4页
第4页 / 共36页
复习提纲.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

复习提纲.docx

《复习提纲.docx》由会员分享,可在线阅读,更多相关《复习提纲.docx(36页珍藏版)》请在冰豆网上搜索。

复习提纲.docx

复习提纲

一、编程题

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()

{

pointp1(2,3);

p1.showxy();

pointp2(2.1,3.2);

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&);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 计算机硬件及网络

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1