C++语言程序设计期末考试综合练习.docx

上传人:b****7 文档编号:26224181 上传时间:2023-06-17 格式:DOCX 页数:48 大小:34.64KB
下载 相关 举报
C++语言程序设计期末考试综合练习.docx_第1页
第1页 / 共48页
C++语言程序设计期末考试综合练习.docx_第2页
第2页 / 共48页
C++语言程序设计期末考试综合练习.docx_第3页
第3页 / 共48页
C++语言程序设计期末考试综合练习.docx_第4页
第4页 / 共48页
C++语言程序设计期末考试综合练习.docx_第5页
第5页 / 共48页
点击查看更多>>
下载资源
资源描述

C++语言程序设计期末考试综合练习.docx

《C++语言程序设计期末考试综合练习.docx》由会员分享,可在线阅读,更多相关《C++语言程序设计期末考试综合练习.docx(48页珍藏版)》请在冰豆网上搜索。

C++语言程序设计期末考试综合练习.docx

C++语言程序设计期末考试综合练习

2018春网院C++语言程序设计期末考试综合练习一

一选择题

1.编写C++程序一般需经过的几个步骤依次是_________.

A.编辑、调试、编译、连接B.编译、编辑、连接、运行

C.编译、调试、编辑、连接D.编辑、编译、连接、运行

2在C++语言中,char型数据在内存中的存储形式是_____________。

A.反码B.补码C.ASCII码D.原码

3.设有定义inta;floatf;doublei;则10+’a’+i*f值的数据类型是__________。

A.intB.doubleC.floatD.不确定

4.设charch;以下正确的赋值语句是___________。

A)ch=’583’;B)ch=’$’;C)ch=’\08’;D)ch=’\xfa’;

5在inta[5]={0,1,3,5};中,数组元素a[1]的值是________。

A)1B)0C)3D)5

6.下列表示引用的语句中,___________是正确的。

已知:

intm=10;

A)int&x=m;B)int&y=10;C)int&xD)float&t=&m;

7.决定C++语言中函数的返回值类型的是()

A.return语句中的表达式类型

B.调用该函数时系统随机产生的类型

C.调用该函数时的主调用函数类型

D.在定义该函数时所指定的数据类型

8.设intm=1,n=2,则++m==n的结果是___________。

A)0B)1C)2D)3

9.假定一个类的构造函数为A(intaa,intbb){a=aa++;b=a*++bb;},则执行Ax(4,5);语句后,x.a和x.b的值分别为__________.

A.4和5B.4和20C.4和24D.20和5

10.已知:

p是一个指向类A数据成员m的指针,A1是类A的一个对象。

如果要给m赋值为

5,_______是正确的。

A.A1.p=5

B.A1->p=5

C.A1.*p=5

D.*A1.p=5

11.在intb[][3]={{1},{3,2},{4,5,6},{0}};中,数组元素a[2][2]的值是________。

A)0B)5C)6D)2

12.指针可以用来表示数组元素,下列表示中___________是错误的。

已知:

inta[3][7];

A)*(a+1)[5]B)*(*a+3)C)*(*(a+1))D)*(&a[0][0]+2)

13.所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是()

A.类B.对象C.函数体D.数据块

14.在inta=3,*p=&A中,*p的值是__________。

A)变量a的地址值B)无意义C)变量p的地址值D)3

15.已知f1(int)是类A的公有成员函数,p是指向成员函数f1()的指针,采用___是正确的。

A.p=fl

B.P=A:

:

fl

C.P=A:

:

fl()

D.p=f1()

16.假定MyClass为一个类,则执行MyClassa,b

(2),*p;语句时,自动调用该类构造函数_[4]_次。

A)2B)3C)4D)5

17.在C++中,数据封装要解决的问题是______。

A)数据的规范化B)便于数据转换

C)避免数据丢失D)防止不同模块之间数据的非法访问

18.一个类的友元函数或友元类能够通过成员操作符访问该类的________。

A)私有成员B)保护成员C)公用成员D)所有成员

19.已知一个类A,______是指向类A成员函数的指针。

假设类有三个公有成员:

void

f1(int),voidf2(int)和inta。

A.A*p

B.intA:

:

*pc=&A:

:

a

C.voidA:

:

*pa

D.A*pp

20.运算符->*的功能是_______。

A.用来表示指向对象指针对指向类成员指针的操作

B.用来表示对象对指向类成员指针的操作

C.用来表示指向对象指针对类成员的操作

D.用来表示对象类成员的操作

21.________不是面向对象系统所包含的要素。

A)重载B)对象C)类D)继承

22.假定MyClass为一个类,则该类的拷贝初始化构造函数的声明语句为______。

A)MyClass&(MyClassx);B)MyClass(MyClassx)

C)MyClass(MyClass&x);D)MyClass(MyClass*x)

23.已知:

类A中一个成员函数说明如下:

voidSet(A&a);

其中,A&a的含义是_______。

A.指向类A的指针为a

B.将a的地址值赋给变量Set

C.a是类A的对象引用,用来作函数Set()的形参

D.变量A与a按位相与作为函数Set()的参数

24.下面对静态数据成员的描述中,正确的是_____。

A)静态数据成员是类的所有对象共享的数据

B)类的每个对象都有自己的静态数据成员

C)类的不同对象有不同的静态数据成员值

D)静态数据成员不能通过类的对象调用

25.下列关于对象数组的描述中,_______是错误的。

A.对象数组的下标是从0开始的

B.对象数组的数组名是一个常量指针

C.对象数组的每个元素是同一个类的对象

D.对象数组只能赋初值,而不能在定义后赋值

26.对类的构造函数和析构函数描述正确的是_____。

A)构造函数可以重载,析构函数不能重载

B)构造函数不能重载,析构函数可以重载

C)构造函数可以重载,析构函数也可以重载

D)构造函数不能重载,析构函数也不能重载

27.类的析构函数的作用是______。

A)一般成员函数B)类的初始化C)对象的初始化D)删除对象

28.为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问

权限定义为_______。

A)publicB)protectedC)privateD)static

29.类MyClass的定义如下:

classMyClass

{

public:

MyClass(){value=0;}

SetVariable(inti){value=i;}

private:

intvalue;

}

则对下列语句序列正确的描述是_______。

MyClass*p,my;p=&my;

A)语句p=&my;是把对象my赋值给指针变量p

B)语句MyClass*p,my;会调用两次类MyClass的构造函数

C)对语句*p.SetVariable(5)的调用是正确的

D)语句p->SetVariable(5)与语句my.SetVariable(5)等价

30.对于拷贝构造函数,正确的描述是________。

A)在C++语言中,如果不自定义类的拷贝构造函数,则每个类都有默认的拷贝构造函数

B)必须为每个类定义拷贝构造函数

C)如果要使用拷贝构造函数,则必须在类中先定义

D)当定义了类的构造函数时,如果要使用拷贝构造函数,则必须定义拷贝构造函数

31.类MyClass的定义如下:

classMyClass

{

public:

MyClass(){}

MyClass(inti){value=newint(i);}

int*value;

}

若要对value赋值,则下面语句正确的是:

A)MyClassmy;my.value=1000;

B)MyClassmy;*my.value=1000;

C)MyClassmy;my.*value=1000;

D)MyClassmy(lO);

32.下面对于友元函数描述正确的是_____。

A)友元函数的实现必须在类的内部定义

B)友元函数是类的成员函数

C)友元函数破坏了类的封装性和隐藏性

D)友元函数不能访问类的私有成员

33.对于下面定义的类MyClass,在函数f()中将对象成员n的值修改为50的语句应该

是______。

classMyClass

{

public:

MyClass(intx){n=x;}

voidSetNum(intnl){n=nl;}

private:

intn;

}

intf()

{

MyClass*ptr=newMyClass(45);

_____________

}

A)MyClass(50)B)SetNum(50)C)ptr->SetNum(50)D)ptr->n=50

34.下面是类MyClass的定义,对定义中语句描述正确的是______。

classMyClass

{

public:

voidMyClass(inta){X=a;}//①

intf(inta,intb)//②

{

X=a;

Y=b;

}

intf(inta,intb,intc=O)//③

{

X=a;

Y=b;

Z=c;

}

staticvoidg(){X=10;}//④

private:

intX,Y,Z;

};

A语句①是类MyClass的构造函数定义

B语句②和语句③实现类成员函数的重载

C语句④实现对类成员变量X的更新操作

D语句①和④都不正确,②和③有二义。

35.对于拷贝构造函数和赋值操作的关系,正确的描述是__________。

A)拷贝构造函数和赋值操作是完全一样的操作

B)进行赋值操作时,会调用类的拷贝构造函数

C)当调用拷贝构造函数时,类的对象正在被建立并被初始化

D)拷贝构造函数和赋值操作不能在同一个类中被同时定义

36.对下列语句正确的描述是。

constint*x;//①

int*constx;//②

A)语句①的含义是指针变量x不能更改

B)语句②的含义是指针变量x所指向的值不能更改

C)语句②的含义是指针变量x不能更改

D)语句①和②是相同含义的不同定义方式

37.有如下定义语句:

inta[]={1,2,3,4,5};,则对语句int*p=a;正确的描述是_______。

A)语句int*p=a;定义不正确

B)语句int*p=a;初始化变量p,使其指向数组对象a的第一个元素

C)语句int*p=a;是把a[0]的值赋给变量p

D)语句int*p=a;是把a[1]的值赋给变量p

38.关于new运算符的错误的描述是_______。

A)使用运算符new创建对象数组时必须定义初始值

B)使用运算符new创建对象时,会调用类的构造函数

C)运算符new可以用来动态创建对象和对象数组

D)使用new运算符创建的对象可以使用运算符delete删除

39.关于this指针使用说法正确的是()

A.保证每个对象拥有自己的数据成员,但共享处理这些数据的代码

B.保证基类私有成员在子类中可以被访问。

C.保证基类保护成员在子类中可以被访问。

D.保证基类公有成员在子类中可以被访问。

二写出下列程序的运行结果写出下列程序的运行结果

1.

#include

classTdate{

public:

Tdate(intm=11,intd=8,inty=2016)

{

month=m;day=d;year=y;

cout<

protected:

intmonth;

intday;

intyear;

};

voidmain()

{

Tdateaday;

Tdatebday(8);

Tdatecday(12,7);

Tdatedday(7,23,2017);

}

2

#include

classSample

{

public:

Sample()

{

for(inti=0;i<8;i++)

cout<<"#";

cout<

}

Sample(charc)

{

for(inti=0;i<12;i++)

cout<

cout<

}

Sample(intn,charc)

{

for(inti=0;i<=n;i++)

cout<

cout<

}

};

voidmain()

{

Samplecl,c2(6,'B'),c3(8,'@');

}

3

#include

classWidget

{public:

Widget(){--count;}

~Widget(){++count;}

intnumWidgets(){returncount;}

private:

staticintcount;//静态数据成员

};

intWidget:

:

count=0;//初始化在类体外进行

voidmain()

{Widgetw,x;

cout<<"Nowthereare"<

{Widgetw,x,y,z;

cout<<"Nowthereare"<

}//退出复合语句时四个对象被destroyed

cout<<"Nowthereare"<

Widgety;

cout<<"Nowthereare"<

}

4.

#include

classtest

{intx;

public:

test(inti=0):

x(i){}

virtualvoidfun1()

{cout<<"test:

:

x"<

};

classft:

publictest

{inty;

public:

voidfun1(){cout<<"ft:

:

y="<

ft(inti=0):

test(i),y(i){}

};

voidmain()

{ftft1(5);

void(test:

:

*p)();

p=test:

:

fun1;

(ft1.*p)();

}

5

#include

#include

classPoint

{public:

//用初始化表列编写构造函数x->x_,y->y_,z->z_。

Point(floatx=0,floaty=0,floatz=0):

x_(x),y_(y),z_(z){}

Point(constPoint&p):

x_(p.x_),y_(p.y_),z_(p.z_){}

//形参point为常引用,它所引用的对象不能被更新,

//即传给它的实参不能被更新。

voidnegate(){x_*=-1;y_*=-1;z_*=-1;}

doublenorm(){returnsqrt(x_*x_+y_*y_+z_*z_);}

voidprint()

{cout<<'('<

}

//赋值运算符“=”重载成员函数声明,定义在类的外部

Point&operator=(constPoint&point);

//关系运算符“==”重载成员函数定义

boolPoint:

:

operator==(constPoint&point)const

//常成员函数,只有它才有资格操作常量和常对象

{returnx_==point.x_&&y_==point.y_&&z_==point.z_;

}

//关系运算符“!

=”重载成员函数定义

boolPoint:

:

operator!

=(constPoint&point)const

{returnx_!

=point.x_||y_!

=point.y_||z_!

=point.z_;

}

//friendPointoperator+(constPoint&p1,constPoint&p2);

Pointoperator+(constPoint&p)

{returnPoint(x_+p.x_,y_+p.y_,z_+p.z_);

}

//运算符“-”重载友元函数声明,定义在类的外部

friendPointoperator-(constPoint&p1,constPoint&p2);

//算符“<<”重载友元函数声明,定义在类的外部

friendostream&operator<<(ostream&ostr,constPoint&point);

private:

floatx_,y_,z_;

};

//Pointoperator+(constPoint&p1,constPoint&p2)

//{returnPoint(p1.x_+p2.x_,p1.y_+p2.y_,p1.z_+p2.z_);

//}

Pointoperator-(constPoint&p1,constPoint&p2)

{returnPoint(p1.x_-p2.x_,p1.y_-p2.y_,p1.z_-p2.z_);

}

ostream&operator<<(ostream&ostr,constPoint&point)

{returnostr<<"("<

}

//赋值运算符“=”重载成员函数定义

Point&Point:

:

operator=(constPoint&point)

{x_=point.x_;

y_=point.y_;

z_=point.z_;

return*this;

}

voidmain()

{Pointp(1,-3,4),q(5,2,8),r1,r2;

r1=p+q;

cout<

r2=p-q+r1;

cout<

if(r1==r2)cout<<"r1==r2"<

elsecout<<"r1!

=r2"<

}

6

#include

classPoint

{

intx,y;

public:

Point(intx1,inty1)

{

x=x1;y=y1;

}

virtualintarea()const

{

return0;

}

};

classRect:

publicPoint

{

intl,w;

public:

Rect(intx1,inty1,intl1,intw1):

Point(x1,y1)

{

l=l1;w=w1;

}

virtualintarea()const

{

returnl*w;

}

};

voidfun(Point&p)

{

cout<

}

voidmain()

{

Rectrec1(2,5,12,7),rec2(3,9,10,13);

Point*base=&rec2;

fun(rec1);

fun(*base);

}

三、填空题

1

程序实现大写字母转换成小写字母。

#include

voidmain()

{chara;

_______;

cin>>a;

if(_______)a=a+i;

cout<

}

2下面的类中定义了一个关于星期的枚举类型,请完成下面的程序。

classMyClass

{

public:

enumWeek{Sun,Mon,Tue,Wed,Thur,Fri,Sat};

Weekweek;

}

voidfun(MyClass&my)

{

_______=________;//将对象my的week赋值为所定义的枚举类型

//值为3的枚举量

}

3

#include

classTest

{public:

______;

Test(inti=0)

{x=i+x;}

intGetnum()

{returnTest:

:

x+7;}

};

_______;

voidmain()

{Testtest;

cout<

}

4下面的类定义了拷贝构造函数,请完成该类的定义和实现。

classMyClass

{

public:

MyClass(intxx=0,intyy=0){X=xx;Y=yy;}

___________;//拷贝构造函数

private:

intX,Y;

};

myClass:

:

_____________//拷贝构造函数的实现

{

X=_________;

___________;

}

5完成下面的类定义。

classMyClass

{

public:

MyClass(){x=0;}

______intGetNum(______my);

private:

intx;

};

intGetNum(______my)

{

retu

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

当前位置:首页 > 农林牧渔 > 林学

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

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