完整word版C++期末考试复习题Word格式文档下载.docx

上传人:b****6 文档编号:20235462 上传时间:2023-01-21 格式:DOCX 页数:18 大小:51.18KB
下载 相关 举报
完整word版C++期末考试复习题Word格式文档下载.docx_第1页
第1页 / 共18页
完整word版C++期末考试复习题Word格式文档下载.docx_第2页
第2页 / 共18页
完整word版C++期末考试复习题Word格式文档下载.docx_第3页
第3页 / 共18页
完整word版C++期末考试复习题Word格式文档下载.docx_第4页
第4页 / 共18页
完整word版C++期末考试复习题Word格式文档下载.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

完整word版C++期末考试复习题Word格式文档下载.docx

《完整word版C++期末考试复习题Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《完整word版C++期末考试复习题Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。

完整word版C++期末考试复习题Word格式文档下载.docx

C.fun(m);

D.fun(m++);

13.下列各种类中,不能定义对象的类是(B)。

A.派生类B.抽象类C.嵌套类D.虚基类

14.类中定义的成员默认为(A)访问属性。

A.public 

 

B.private 

C.protected 

D.friend

15.静态成员函数对类的数据成员访问( 

B)。

A.是不允许的 

B.只允许是静态数据成员

C.只允许是非静态数据成员 

D.可允许是静态数据成员或非静态数据成员

16.在下列语句中,将函数intf_sum(intx,inty)正确重载的是(A)。

A.floatf_sum(intx,inty)B.intf_sum(inta,intb)

C.intf_sum(intx)D.floatf_sum(inta,intb)

17.下列各语句是输出字符'

A'

的,其中错误语句是(B)。

A.cout<

<

'

;

B.cout.put('

);

C.charch='

cout<

ch;

D.cout<

put('

18.当将一个类A或函数f()说明为另一个类B的友元后,类A或函数f()能够直接访问类B的( 

D)。

A.只能是公有成员 

B.只能是保护成员

C.只能是除私有成员之外的任何成员 

D.具有任何权限的成员

19.C++语言程序中进行文件操作时应包含的头文件是(A)。

A.fstream.hB.math.hC.stdlib.hD.strstrea.h

20.在C++程序中使用的cin标识符是系统类库中定义的(A 

)类中的一个对象。

A.istream 

B.ostream 

C.iostream 

D.fstream 

21.已知:

charn=’p’;

在下列表示引用的方法中,()是正确的。

  

A.char&

x=n;

B.char&

y=’p’;

C.char&

z;

D.float&

t=&

n;

22.在(A)情况下适宜采用内联函数。

A.函数代码小,频繁调用B.函数代码多,频繁调用

C.函数体含有递归语句D.函数体含有循环语句

23.如果表达式a+b中的“+”是作为友元函数重载的运算符,若采用运算符函数调用格式,则可表示为( 

)。

A.a.operator+(b) 

B.b.operator+(a) 

C.operator+(a,b) 

D.operator(a+b)

24.执行完循环for(i=1;

i<

100;

i++);

后,i的值为(B)。

A.99B.100C.101D.102

25.假定一个类对象数组为A[n],当离开它定义的作用域时,系统自动调用该类析构函数的次数为( 

C)。

A.0 

B.1 

C.n 

D.n-1 

26.在C++程序中使用的cout标识符是系统类库中定义的(B 

C.iostream 

二、填空题

1.在下面一段类定义中,Derived类是由直接基类Base1和Base2所派生的,Derived类包含有两个间接基类BaseBase,在初始化函数Init中,需要把x1和x2的值分别赋给属于基类Base1的x成员和属于基类Base2的x成员。

classBaseBase{

protected:

intx;

public:

BaseBase(){x=1;

}

};

classBase1:

publicBaseBase{

Base1(){}

classBase2:

Base2(){}

classDerived:

(1)publicBase1,

(2)publicBase2

{

Derived(){}

voidInit(intx1,intx2){

(3)Base1:

x=x1;

_(4)__Base2:

x=x2_;

}

(5)voidoutput(){cout<

Base1:

x<

'

Base2:

endl;

2.该类中MaxA()函数的实现如下,请在标号位置补充适当的内容。

int

(1)inta[]

intx=a[0];

for(inti=1;

i<

i++)

if(a[i]>

x)

(2)a[j+i=j];

(3)break;

classA{

char*a;

public:

___

(1)___//定义无参构造函数,使a的值为空

A(char*aa){

a=___

(2)___;

strcpy(a,aa);

//用aa所指字符串初始化a所指向的动态存储空间

}

___(3)___//定义析构函数,删除a所指向的动态存储空间

};

classPoint

private:

intx,y;

Point(){x=y=0;

Point(intx0,inty0){x=x0;

y=y0;

intGetX(){returnx;

intGetY(){returny;

voidPrint(){cout<

"

Point("

"

y<

)"

1Pointoperator+(Point&

pt,intdd);

//友元函数声明

2;

Pointoperator+(Point&

pt,intdd)

//加号操作符重载函数,实现Point类对象与整数加法

Pointtemp=pt;

3;

temp.y+=dd;

returntemp;

Pointoperator+(Point&

pt1,Point&

pt2)

//加号操作符重载函数,实现两个Point类对象的加法

Pointtemp;

temp.x=pt1.x+pt2.x;

4;

return5;

3.下列程序的功能是,建立磁盘文件1.txt,从键盘输入一行字符串,以回车键结束,将其中的字母字符存放在文件1.txt中,请填空完成该程序。

#include<

fstream>

usingnamaspacestd;

intmain()

chara[80];

;

//定义输出流对象outfile

if(!

outfile1)

{cerr<

打开文件出错!

exit

(1);

}

;

//从键盘读入一行字符

for(inti=0;

c[i]!

=0;

i++)

if()

cout<

;

return0;

四、根据程序试写出运行结果

1.

#include<

iostream.h>

voidmain()

inti,j;

int*p1,*p2;

p1=&

i;

p2=&

j;

i=3;

j=6;

i="

j="

j<

*p1="

*p1<

*p2="

*p2<

*p1=5;

*p2=8;

cout<

2.

#include<

string.h>

classCD{

char*a;

intb;

voidInit(char*aa,intbb)

{

a=newchar[strlen(aa)+1];

strcpy(a,aa);

b=bb;

char*Geta(){returna;

intGetb(){returnb;

voidOutput(){cout<

a<

b<

}

voidmain()

CDdx,dy;

chara[20];

dx.Init("

abcdef"

30);

strcpy(a,dx.Geta());

strcat(a,"

xyz"

dy.Init(a,dx.Getb()+20);

dx.Output();

dy.Output();

3.

inta[10];

intn;

A(intaa[],intnn):

n(nn){

for(inti=0;

i++)a[i]=aa[i];

intGet(inti){returna[i];

}

intSumA(intn){

ints=0;

for(intj=0;

j<

j++)s+=a[j];

returns;

voidmain(){

inta[]={2,5,8,10,15,20};

Ax(a,4);

Ay(a,6);

intd=1;

4;

i++)d*=x.Get(i);

intf=y.SumA(5);

d="

d<

f="

f<

4.

classcircle{

intr;

voidsetr(intx){r=x;

virtualvoidshow()=0;

classarea:

publiccircle{

voidshow()

{cout<

这个圆的面积是:

3.14*r*r<

}};

classperimeter:

voidshow()

{cout<

这个圆的周长是:

"

2*3.14*r<

voidmain()

{circle*ptr;

areaob1;

perimeterob2;

ob1.setr(10);

ob2.setr(10);

ptr=&

ob1;

ptr->

show();

ob2;

5.

classA{

A(){cout<

A"

classB{

B(){cout<

B"

classC:

publicA{

C(){cout<

C"

Bb;

intmain()

{

Cobj;

6.

classsmall_cat{

doubleweight;

//普通数据成员,表示一只小猫的重量

staticdoubletotal_weight;

//静态数据成员,用来累计小猫的重量

staticdoubletotal_number;

//静态数据成员,用来累计小猫的只数

small_cat(doublew)//构造函数

{weight=w;

total_weight+=w;

//累加小猫的重量

total_number++;

}//累加小猫的只数

voiddisplay()

这只小猫的重量是"

weight<

千克\n"

staticvoidtotal_disp()

total_number<

只的小猫的总重量是"

total_weight<

千克"

doublesmall_cat:

total_weight=0;

//静态数据成员初始化

total_number=0;

//静态数据成员初始化

{small_catw1(0.5),w2(0.6),w3(0.4);

w1.display();

//调用普通成员函数,显示第1只小猫的重量

w2.display();

//调用普通成员函数,显示第2只小猫的重量

w3.display();

//调用普通成员函数,显示第3只小猫的重量

small_cat:

total_disp();

//调用静态成员函数

return0;

}//显示小猫的只数和总重量

5、编程题

1.编程求圆、圆内接正方形和圈外切正方形的面积和周长。

要求使用抽象类。

解:

constdoublePI=3.1415;

classShape

Shape(doublei)

{r=i;

virtualvoidArea()=0;

virtualvoidPerimeter()=0;

doubler;

classCircle:

publicShape

Circle(doublei):

Shape(i)

{}

voidArea()

圆的面积是"

PI*r*r<

voidPerimeter()

圆的周长是"

2*PI*r<

classIn_Square:

In_Square(doublei):

{}

圆内接正方形的面积是"

2*r*r<

圆内接正方形的周长是"

4*1.414*r<

classEx_Square:

Ex_Square(doublei):

圆外切正方形的面积是"

4*r*r<

圆外切正方形的周长是"

8*r<

Shape*ps;

ps=newCircle(8);

ps->

Area();

Perimeter();

ps=newIn_Square(8);

ps=newEx_Square(8);

deleteps;

(附上运行结果:

2.已知复数类Complex的声明如下:

classComplex

{public:

Complex();

//无参构造函数

Complex(double);

//转换构造函数

Complex(double,double);

//有两个形参的构造函数

friendComplexoperator+(Complex&

Complex&

//对“+”运算符进行重载

friendostream&

operator<

(ostream&

//对“<

”运算符进行重载

friendistream&

operator>

>

(istream&

//对“>

private:

doublereal,imag;

要求:

(1)写出该类的所有构造函数的类外定义代码。

(2)写出对运算符“+”、“<

”、“>

”进行重载的运算符重载函数的定义。

3.编写程序,计算出复数对象c1和c2相加结果,并将其结果输出。

4.从建立的数据文件f1.dat中读入10个整数放在数组中,找出并输出10个数中的最大者和它在数组中的序号。

iostream>

usingnamespacestd;

intmain()

{

inta[10],max,i,order;

fstreaminfile("

f1.dat"

ios:

in);

if(!

infile)

cerr<

openerror!

exit

(1);

for(i=0;

10;

infile>

a[i];

a[i]<

max=a[0];

order=0;

for(i=1;

max)

{max=a[i];

order=i;

max="

max<

endl<

order="

order<

infile.close();

return0;

5.根据下面类中MaxMin函数成员的原型和注释写出它的类外定义。

classAA{

int*a;

intMS;

voidInitAA(intaa[],intnn,intms){

if(nn>

ms){cout<

Error!

MS=ms;

n=nn;

a=newint[MS];

for(inti=0;

MS;

i++)a[i]=aa[i];

intMaxMin(int&

x,int&

y);

//从数组a的前n个元素中求出

//最大值和最小值,并分别由引用参数x和y带回,

//同时若n大于0则返回1,否则返回0。

intAA:

MaxMin(int&

y)

intmx,my;

mx=my=a[0];

i++){

if(a[i]>

mx)mx=a[i];

if(a[i]<

my)my=a[i];

x=mx;

y=my;

if(n>

0)return1;

elsereturn0;

6.根据下面类中构造函数的原型和注释写出它的类外定义。

classArray{

int*a;

//指向动态分配的整型数组空间

//记录数组长度

Array(intaa[],intnn);

//构造函数,利用aa数组长度nn初始化n,

//利

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

当前位置:首页 > 工程科技 > 冶金矿山地质

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

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