C++复习题练习.docx

上传人:b****2 文档编号:23023516 上传时间:2023-04-30 格式:DOCX 页数:20 大小:18.64KB
下载 相关 举报
C++复习题练习.docx_第1页
第1页 / 共20页
C++复习题练习.docx_第2页
第2页 / 共20页
C++复习题练习.docx_第3页
第3页 / 共20页
C++复习题练习.docx_第4页
第4页 / 共20页
C++复习题练习.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

C++复习题练习.docx

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

C++复习题练习.docx

C++复习题练习

1、编写一个类LEI,打印其私有成员变量a的值,并测试该类。

#include

usingnamespacestd;

classLEI

{

public:

LEI(inti){a=i;}

voidget()

{

cout<

}

private:

inta;

};

voidmain()

{

LEIA(10);

A.get();

}

2、用面向对象的方法完成对三个数从大到小的排序并输出,并测试该类。

#include

usingnamespacestd;

classSort

{

public:

Sort(){};

Sort(inti,intj,intk)

{

a=i;b=j;c=k;

}

voidmax(inta,intb,intc)

{

if(a>=b&&b>=c)

cout<

if(a>c&&c>b)

cout<

if(b>c&&c>a)

cout<

if(b>a&&a>c)

cout<

if(c>a&&a>b)

cout<

else

cout<

}

private:

inta,b,c;

};

voidmain()

{

SortB;

B.max(3,4,5);

}

3、定义类lei,完成一个整形数的输入和输出,并测试该类。

#include

usingnamespacestd;

classIO

{

public:

IO(){};

voidinput()

{

cin>>a;

}

voidoutput()

{

cout<

}

private:

inta;

};

voidmain()

{

IOA;

A.input();

A.output();

}

4、用面向对象的方法,完成圆类的定义

#include

usingnamespacestd;

classCircle

{

public:

Circle(doublei)

{

r=i;

}

voidPrintf()

{

cout<<3.14*r*r<

}

private:

doubler;

};

//下面为数据测试,本题不需要

voidmain()

{

CircleB(4.0);

B.Printf();

}

 

5、从键盘上输入一个3*3的整数矩阵,求其各行的平均值并输出,输出时保留位小数。

#include

#include//小数定义文件

usingnamespacestd;

intmain()

{

inta[3][3],i,j;

doubleave,b[3];

for(i=0;i<3;++i)

{

for(j=0;j<3;++j)

{

cin>>a[i][j];

}

ave=(a[i][0]+a[i][1]+a[i][2])/3.0;

b[i]=ave;

}

for(i=0;i<3;i++)

cout<

return0;

}

6、编一个程序计算球体、正方体和圆柱体的体积。

要求:

(1)抽象出一个公共基类Cube为抽象类,在其中定义一个公共的数据成员radius,此数值可以作为球体的半径和圆柱体底面圆半径;定义对radius进行读写的设置函数和获取函数,再定义求体积的纯虚函数volume和显示半径的虚函数print;

(2)由Cube派生出球体类Sphere,其中有求体积的实际定义;(3)从Cube派生出square类,新定义length,并可以对其进行读写,再定义volume和print函数;(3)在测试程序中分别创建一个Sphere类、square和一个Cylinder类的对象,通过调用相关成员函数显示其数据成员和体积信息。

#include

usingnamespacestd;

classCube

{

public:

Cube(){};

Cube(doublei){

r=i;

cout<<"半径为:

"<

}

private:

doubler;

};

classSphere:

publicCube

{

public:

Sphere(){};

Sphere(doublei):

Cube(i){r=i;}

voidvolume(){cout<<"球体的体积为:

"<<(4*3.14*r*r*r)/3.0<

private:

doubler;

};

classsquare:

publicCube

{

public:

square(){};

square(doublei):

Cube(i)

{length=i;}

voidvolume()

{

V=length*length*length;

}

voidprintf(){

cout<<"正方体的体积为:

"<

private:

doublelength,V;

};

classCylinder:

publicCube

{

public:

Cylinder(doublei):

Cube(i)

{r=i;}

voidvolume()

{

V2=3.14*r*r*r;

}

voidprintf(){

cout<<"圆柱体的体积为:

"<

private:

doubler,V2;

};

voidmain()

{

SphereA(3.4);

A.volume();

squareB(3.4);

B.volume();

B.printf();

CylinderC(3.4);

C.volume();

C.printf();

}

7、用面向对象方法从键盘输入12个数存入二维数组a[3][4]中,编写程序求出最大元素的值及它所在的行号和列号。

#include

usingnamespacestd;

intmain()

{

inta[3][4],i,j,max,b,c;

for(i=0;i<3;++i)

{

for(j=0;j<4;++j)

{

cin>>a[i][j];

if(i==0&&j==0)

max=a[0][0];

if(a[i][j]>max)

{

max=a[i][j];

b=i+1;

c=j+1;

}

}

}

cout<<"最大数为:

"<

"<

"<

return0;

}

8、用面向对象的方法设计求圆的面积、周长。

要求:

⑴、写出类Circle(圆)的定义,成员函数setRadius设置半径、getArea求面积以及getPerimeter求周长;⑵、在主函数中,从键盘输入半径,输出其面积和周长。

#include

usingnamespacestd;

classCircle

{

public:

Circle(){};

voidsetRadius()

{

cin>>r;

}

voidgetArea()

{

cout<<"圆的面积是:

"<<3.14*r*r<

}

voidgetPerimeter()

{

cout<<"圆的周长是:

"<<2*3.14*r<

}

private:

doubler;

};

voidmain()

{

CircleA;

A.setRadius();

A.getArea();

A.getPerimeter();

}

9、编写一个求方程ax2+bx+c=0的根的程序,用3个函数分别求当b2-4ac大于零、等于零、和小于零时的方程的根。

要求从主函数输入a,b,c的值并输出结果。

#include

#include

usingnamespacestd;

voidX(doublei,doublej,doublek)

{

cout<<"方程的根是:

"<<(-j+sqrt(j*j-4*i*k))/(2*i)<<"和"<<(-j-sqrt(j*j-4*i*k))/(2*i)<

}

voidX1(doublei,doublej,doublek)

{

cout<<"方程的根是:

"<<-j/(2*i)<

}

voidX2(doublei,doublej,doublek)

{

cout<<"方程无解!

"<

}

voidmain()

{

doublea,b,c;

cout<<"请输入a,b,c的值:

";

cin>>a>>b>>c;

if(b*b-4*a*c>0)

X(a,b,c);

elseif(b*b-4*a*c==0)

X1(a,b,c);

else

X2(a,b,c);

}

10、定义一个复数类Complex,形式如下:

RealPart(实部)+ImgPart(虚部)*i。

定义含两个参数的构造函数、一个Show()函数(用以输出Real,ImgPart的值),另外作为成员函数重载的运算符”+”和“-”(功能是将此类二个对象相加、减)。

#include

usingnamespacestd;

classComplex

{

public:

Complex(){RealPart=0;ImgPart=0;}

Complex(doublea,doubleb)

{

RealPart=a;

ImgPart=b;

}

voidshow()

{

cout<<"实部为:

"<

"<

}

Complexoperator+(Complex&);

friendostream&operator<<(ostream&,Complex&);

private:

doubleRealPart,ImgPart;

};

ComplexComplex:

:

operator+(Complex&n)

{

Complexc;

c.RealPart=RealPart+n.RealPart;

c.ImgPart=ImgPart+n.ImgPart;

returnc;

}

ostream&operator<<(ostream&output,Complex&c)

{

output<

returnoutput;

}

voidmain()

{

ComplexA(2.5,3.5),B(2,5),k;

k=A+B;

A.show();

B.show();

cout<

}

11、设计一个基类,从基类派生圆柱,设计成员函数输出它们的面积和体积。

定义一个座标类Vector2d,二个数据成员为double型x,y为private属性。

作为成员函数重载的运算苻”+”的功能是将此类二个对象的数据成员x和y对应相加。

#include

usingnamespacestd;

classA

{

public:

A()

{

cout<<"经计算,圆柱的体积和面积分别为:

"<

}

};

classCylinder:

publicA

{

public:

Cylinder(doublei,doublej){r=i;high=j;}

voidArea()

{

cout<<3.14*r*r+2*3.14*r*high<<"和";

}

voidV()

{

cout<<3.14*r*r*high<

}

private:

doubler,high;

};

classVector2d

{

public:

Vector2d(){a=0;}

Vector2d(doublei){a=i;}

voidshow()

{

cout<

}

Vector2doperator+(Vector2d&);

friendostream&operator<<(ostream&,Vector2d&);

private:

doublea;

};

Vector2dVector2d:

:

operator+(Vector2d&n)

{

Vector2dc;

c.a=a+n.a;

returnc;

}

ostream&operator<<(ostream&output,Vector2d&c)

{

output<

returnoutput;

}

voidmain()

{

Cylinders(1.0,1.0);

s.Area();

s.V();

Vector2dp(10),q(8),c;

p.show();

q.show();

c=p+q;

cout<

cout<<"两个数之和为:

"<

}

12、设计一个类Rect,要求如下:

(1)该类中的私有数据成员length,width存放它的长和宽,并且设置它们的默认值是0。

(2)通过成员函数设置其长和宽,并确保长和宽都在(0,50)范围之内。

(3)实现求周长函数GetPerimeter()。

(4)写出main函数,计算长和宽分别为5和9的周长。

#include

usingnamespacestd;

classRec

{

public:

Rec(){length=0;width=0;}

Rec(doublei,doublej){length=i;width=j;}

voidGetPerimeter()

{

if(length>0&&length<50&&width>0&&width<50)

cout<<"长方形的周长是:

"<<2*length*width<

else

cout<<"数据有误!

"<

}

private:

doublelength,width;

};

voidmain()

{

RecA(9,5);

A.GetPerimeter();

}

13、设计一个汽车类vehicle,包含的数据成员有车轮个数wheels和车重weight。

小车类car是它的派生类,其中包含载人数passenger_load。

每个类都有相关数据的输出方法。

在主程序中定义一个car类对象,对其车轮个数、车重、载人数进行设置并显示。

#include

usingnamespacestd;

classvehicle

{

public:

vehicle(intj,intk)

{

wheels=j;weight=k;

cout<<"大车车轮数:

"<

"<

}

private:

intwheels,weight;

};

classcar:

publicvehicle

{

public:

car(inti,intj,intk):

vehicle(j,k)

{passenger_load=i;

cout<<"小车载人数为:

"<

private:

intpassenger_load;

};

voidmain()

{

carA(30,6,10);

}

14、利用纯虚函数编写程序计算正方体、球体的表面积和体积。

定义抽象类Container作为公共基类,并在其中定义求表面积的纯虚函数surface()和体积的纯虚函数volume(),并在其中定义公共数据成员radius,此数据可作为球体半径、正方体边长。

由此抽象类派生出要描述的两个类:

即Cube、Sphere,在这两个类中都有表面积和体积的重定义版本。

#include

usingnamespacestd;

classCCt//定义抽象类CContaineer

{

protected:

doubleradius;//公共的数据成员radius

doublearea,volume;//表面积area,体积volume

public:

virtualvoidArea()=0;//求表面积的纯虚函数

virtualvoidVolume()=0;//求体积的纯虚函数

CCt(doublea,doubleb,doublec){radius=a;area=b;volume=c;}//基类的构造函数

};

classSquare:

publicCCt//派生类Square

{

public:

Square(floata,doubleb,doublec):

CCt(a,b,c){}

voidArea()//虚函数Area()

{

area=6*radius*radius;

cout<<"Square'sarea="<

}

voidVolume()//虚函数Volume()

{

volume=radius*radius*radius;

cout<<"Square'svolume="<

};

classcircle:

publicCCt//派生类circle

{

public:

circle(floata,doubleb,doublec):

CCt(a,b,c)

{}//派生类circle构造函数

voidArea()

{area=4*3.14*radius*radius;

cout<<"circle'sarea="<

}

voidVolume()

{volume=3.14*radius*radius*radius*4/3;

cout<<"circle'svolume="<

};

voidAreafun(CCt*p)//根据p所指向的对象不同,调用不同的派生类Area

{p->Area();}

voidVolumefun(CCt*p)//根据p所指向的对象不同,调用不同的派生类Volume

{p->Volume();}

voidmain()

{Squarer1(5,0,0);//Square的对象r1

circlec1(8,0,0);//circle的对象c1

Areafun(&r1);//调用的将是派生类Square的Area虚函数

Volumefun(&r1);//调用的将是派生类Square的Volume虚函数

Areafun(&c1);

Volumefun(&c1);

}

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

当前位置:首页 > 人文社科 > 视频讲堂

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

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