完整word版C++期末考试复习题.docx

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

完整word版C++期末考试复习题.docx

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

完整word版C++期末考试复习题.docx

完整word版C++期末考试复习题

C++期末考试复习题

一、选择题

1.在声明类时,下面的说法正确的是(C)。

A.可以在类的声明中给数据成员赋初值B.数据成员的数据类型可以是register

C.private、public、protected可以按任意顺序出现

D.没有用private、public、protected定义的数据成员是公有成员

2.在一个类的定义中,包含有(  C)成员的定义。

       A.数据     B.函数     C.数据和函数     D.数据或函数

3.假定AA为一个类,inta()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为(  A)。

       A.intAA:

:

a()     B.intAA:

a()       C.AA:

:

a()         D.AA:

:

inta()

4.假定AA为一个类,a为该类公有的数据成员,px为指向该类对象的一个指针,则访问px所指对象中数据成员a的格式为(  C)。

 A.px(a)     B.px[a]     C.px->a     D.px.a

5.下列关于运算符new的描述中,错误的是(D)。

A.它可以创建对象或变量B.它可以创建对象数组或一般类型数组

C.用它创建对象或对象数组时要调用相应的构造函数D.用它创建的对象可以不用delete运算符释放

6.在下面有关析构函数特征的描述中,正确的是(A)。

A.一个类中可以定义多个析构函数B.析构函数名与类名完全相同

C.析构函数不能指定返回类型D.析构函数可以由一个或多个参数

7.构造函数是在(B)时被执行的。

A.程序编译B.创建对象C.创建类D.程序装入内存

8.友元的作用之一是(A)。

A.提高程序的运行效率B.加强类的封装性

C.实现数据的隐藏性D.增加成员函数的种类

9.设置虚基类的目的是(B)。

A.简化程序B.消除二义性C.提高运行效率D.减少目标代码

10.回值的纯虚函数,正确的写法是(B)。

A.virtualshow()=0;B.virtualvoidshow();

C.virtualvoidshow()=0;D.voidshow()=0virtual;

11.重载函数在调用时选择的依据中,(B)是错误的。

A.函数名字B.函数的返回类型C.参数个数D.参数的类型

12.已知:

intfun(int&a),m=10;下列调用fum()函数的语句中,正确的是(C)。

A.fun(&m);B.fun(m*2);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<<'A';B.cout.put('A');C.charch='A';cout<

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 )类中的一个对象。

       A.istream     B.ostream     C.iostream     D.fstream     

二、填空题

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

classBaseBase{

protected:

intx;

public:

BaseBase(){x=1;}

};

classBase1:

publicBaseBase{

public:

Base1(){}

};

classBase2:

publicBaseBase{

public:

Base2(){}

};

classDerived:

(1)publicBase1,

(2)publicBase2

{

public:

Derived(){}

voidInit(intx1,intx2){

(3)Base1:

:

x=x1;

_(4)__Base2:

:

x=x2_;

}

(5)voidoutput(){cout<

:

x<<''<

:

x<

};

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

int

(1)inta[]

{

intx=a[0];

for(inti=1;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;

public:

Point(){x=y=0;}

Point(intx0,inty0){x=x0;y=y0;}

intGetX(){returnx;}

intGetY(){returny;}

voidPrint(){cout<<"Point("<

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

usingnamaspacestd;

intmain()

{

chara[80];

;//定义输出流对象outfile

if(!

outfile1)

{cerr<<"打开文件出错!

"<

exit

(1);

}

;//从键盘读入一行字符

for(inti=0;c[i]!

=0;i++)

if()

cout<

;

return0;

}

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

1.

#include

voidmain()

{

inti,j;

int*p1,*p2;

p1=&i;p2=&j;

i=3;j=6;

cout<<"i="<

cout<<"*p1="<<*p1<<"*p2="<<*p2<

*p1=5;*p2=8;

cout<<"i="<

cout<<"*p1="<<*p1<<"*p2="<<*p2<

}

2.

#include

#include

classCD{

char*a;

intb;

public:

voidInit(char*aa,intbb)

{

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

strcpy(a,aa);

b=bb;

}

char*Geta(){returna;}

intGetb(){returnb;}

voidOutput(){cout<

};

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.

#include

classA{

inta[10];intn;

public:

A(intaa[],intnn):

n(nn){

for(inti=0;i

}

intGet(inti){returna[i];}

intSumA(intn){

ints=0;

for(intj=0;j

returns;

}

};

voidmain(){

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

Ax(a,4);

Ay(a,6);

intd=1;

for(inti=0;i<4;i++)d*=x.Get(i);

intf=y.SumA(5);

cout<<"d="<

cout<<"f="<

}

4.

#include

classcircle{

protected:

intr;

public:

voidsetr(intx){r=x;}

virtualvoidshow()=0;

};

classarea:

publiccircle{

public:

voidshow()

{cout<<"这个圆的面积是:

"<<3.14*r*r<

classperimeter:

publiccircle{

public:

voidshow()

{cout<<"这个圆的周长是:

"<<2*3.14*r<

voidmain()

{circle*ptr;

areaob1;

perimeterob2;

ob1.setr(10);

ob2.setr(10);

ptr=&ob1;ptr->show();

ptr=&ob2;ptr->show();

}

5.

#include

classA{

public:

A(){cout<<"A";}

};

classB{

public:

B(){cout<<"B";}

};

classC:

publicA{

public:

C(){cout<<"C";}

private:

Bb;

};

intmain()

{

Cobj;

return0;

}

6.

#include

classsmall_cat{

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

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

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

public:

small_cat(doublew)//构造函数

{weight=w;

total_weight+=w;//累加小猫的重量

total_number++;}//累加小猫的只数

voiddisplay()

{cout<<"这只小猫的重量是"<

staticvoidtotal_disp()

{cout<

cout<

};

doublesmall_cat:

:

total_weight=0;//静态数据成员初始化

doublesmall_cat:

:

total_number=0;//静态数据成员初始化

intmain()

{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.编程求圆、圆内接正方形和圈外切正方形的面积和周长。

要求使用抽象类。

解:

#include

constdoublePI=3.1415;

classShape

{

public:

Shape(doublei)

{r=i;}

virtualvoidArea()=0;

virtualvoidPerimeter()=0;

protected:

doubler;

};

 

classCircle:

publicShape

{

public:

Circle(doublei):

Shape(i)

{}

voidArea()

{cout<<"圆的面积是"<

voidPerimeter()

{cout<<"圆的周长是"<<2*PI*r<

};

 

classIn_Square:

publicShape

{

public:

In_Square(doublei):

Shape(i)

{}

voidArea()

{cout<<"圆内接正方形的面积是"<<2*r*r<

voidPerimeter()

{cout<<"圆内接正方形的周长是"<<4*1.414*r<

};

 

classEx_Square:

publicShape

{

public:

Ex_Square(doublei):

Shape(i)

{}

voidArea()

{cout<<"圆外切正方形的面积是"<<4*r*r<

voidPerimeter()

{cout<<"圆外切正方形的周长是"<<8*r<

};

 

voidmain()

{

Shape*ps;

ps=newCircle(8);

ps->Area();

ps->Perimeter();

ps=newIn_Square(8);

ps->Area();

ps->Perimeter();

ps=newEx_Square(8);

ps->Area();

ps->Perimeter();

deleteps;

}

(附上运行结果:

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

classComplex

{public:

Complex();//无参构造函数

Complex(double);//转换构造函数

Complex(double,double);//有两个形参的构造函数

friendComplexoperator+(Complex&,Complex&);//对“+”运算符进行重载

friendostream&operator<<(ostream&,Complex&);//对“<<”运算符进行重载

friendistream&operator>>(istream&,Complex&);//对“>>”运算符进行重载

private:

doublereal,imag;

};

要求:

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

(2)写出对运算符“+”、“<<”、“>>”进行重载的运算符重载函数的定义。

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

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

解:

#include

#include

usingnamespacestd;

intmain()

{

inta[10],max,i,order;

fstreaminfile("f1.dat",ios:

:

in);

if(!

infile)

{

cerr<<"openerror!

"<

(1);}

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

{

infile>>a[i];

cout<

}

cout<

max=a[0];

order=0;

for(i=1;i<10;i++)

if(a[i]>max)

{max=a[i];order=i;}

cout<<"max="<

return0;

}

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

classAA{

int*a;

intn;

intMS;

public:

voidInitAA(intaa[],intnn,intms){

if(nn>ms){cout<<"Error!

"<

(1);}

MS=ms;

n=nn;

a=newint[MS];

for(inti=0;i

}

intMaxMin(int&x,int&y);//从数组a的前n个元素中求出

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

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

};

解:

intAA:

:

MaxMin(int&x,int&y)

{

intmx,my;

mx=my=a[0];

for(inti=1;i

if(a[i]>mx)mx=a[i];

if(a[i]

}

x=mx;y=my;

if(n>0)return1;elsereturn0;

}

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

classArray{

int*a;//指向动态分配的整型数组空间

intn;//记录数组长度

public:

Array(intaa[],intnn);//构造函数,利用aa数组长度nn初始化n,

//利

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

当前位置:首页 > 初中教育 > 英语

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

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