c++试题.docx

上传人:b****4 文档编号:5495592 上传时间:2023-05-08 格式:DOCX 页数:47 大小:125.53KB
下载 相关 举报
c++试题.docx_第1页
第1页 / 共47页
c++试题.docx_第2页
第2页 / 共47页
c++试题.docx_第3页
第3页 / 共47页
c++试题.docx_第4页
第4页 / 共47页
c++试题.docx_第5页
第5页 / 共47页
c++试题.docx_第6页
第6页 / 共47页
c++试题.docx_第7页
第7页 / 共47页
c++试题.docx_第8页
第8页 / 共47页
c++试题.docx_第9页
第9页 / 共47页
c++试题.docx_第10页
第10页 / 共47页
c++试题.docx_第11页
第11页 / 共47页
c++试题.docx_第12页
第12页 / 共47页
c++试题.docx_第13页
第13页 / 共47页
c++试题.docx_第14页
第14页 / 共47页
c++试题.docx_第15页
第15页 / 共47页
c++试题.docx_第16页
第16页 / 共47页
c++试题.docx_第17页
第17页 / 共47页
c++试题.docx_第18页
第18页 / 共47页
c++试题.docx_第19页
第19页 / 共47页
c++试题.docx_第20页
第20页 / 共47页
亲,该文档总共47页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

c++试题.docx

《c++试题.docx》由会员分享,可在线阅读,更多相关《c++试题.docx(47页珍藏版)》请在冰点文库上搜索。

c++试题.docx

c++试题

一、选择题

1.下列各高级语言中,()是面向对象的程序语言。

A)BASICB)CC)C++D)Pascal

2.在32位机中,double型字宽为( )字节。

A.2;B.4;C.6;D.8

3.在inta[][3]={{1,0},{3,2},{4,5,6},{0}};中a[2][2]的值是(  )。

A.0;B.5;C.6;D.2

4.对于double(*p)[10];的描述,()是正确的。

A.p是一个指向数组的指针,所指向的数组是10个double型元素;

B.p是一个指向某个数组中第10个元素的指针,该元素是double型变量;

C.p[5]表示某个数组的第10个元素的值;

D.p是一个具有10个元素的指针数组,每个元素是一个double型指针;

5.下列for循环的循环体执行次数为()。

for(inti(10),j

(1);i=j=0;i++,j--)

A.0;B.1;C.4;D.无限;

6.下述关于开关语句的描述中,()是正确的。

A.开关语句中default子句可以没有,也可以有一个;

B.开关语句中每个语句序列中必须有break语句;

C.开关语句中default子句只能放在最后;

D.开关语句中case子句后面的表达式可以是整形表达式。

7.下列(  )是引用调用;

A.形参是指针,实参是地址值;B.形参和实参都是变量;

C.形参是数组名,实参是数组名;D.形参是引用,实参是变量。

8.以下说法中正确的是()

A)C++程序总是从第一个定义的函数开始执行

B)在C++程序中,要调用的函数必须在main()函数中定义

C)C++程序总是从main()函数开始执行

D)C++程序中的main()函数必须放在程序的开始部分

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

A.它可以用来动态创建对象和对象数组;

B.使用它创建的对象或对象数组可以使用运算符delete删除;

C.使用它创建对象时要调用构造函数;

D.使用它创建对象数组时必须指定初始值。

10.在inta=3,*p=&a;中,*p的值是()。

A.变量a的地址值

B.无意义

C.变量p的地址值

D.变量a的值

二、判断题

1、在说明语句chara(‘A’),&b=a,*pa=&a;中,b的值的*pa的是相等的。

(  )

2、在不同类型操作数组成的表达式中,其表达式的类型一定是最高类型double型。

(  )

3、break语句也可以用于if体内,它可退出if语句。

(  )

4、在一个被调用函数中,一个return语句不可返回多个值给调用函数。

(  )

5、在传值调用中,要求实参和形参的类型完全一致并且个数相等。

(  )

6、for循环中,循环变量的作用域是该循环的循环体内。

(  )

7、constchar*p说明了p是指向字符串的常量指针。

(  )

三、读程序并写出程序的运行结果

1、#include

voidmain()

{

shorts=0;

doubled=10.0;

cout<

cout<

cout<

cout<

cout<

}

2、#include

voidmain()

{

inta=10,s=0;

if(a=4)

while(a!

=5)s+=a++;

else

a++;s++;

cout<<"s="<

cout<<"a="<

}

3、#include

voidmain()

{

ints=0;

for(inta=8;a>5;a–=2);//注意此处的分号

s+=a;s*=2;

if(a==4)

{cout<<"s="<

cout<<"a="<

else

{cout<<"a="<

cout<<"s="<

}

4、#include

voidmain()

{intx=3,y=3;

switch(x%2)

{

case1:

switch(y)

{case0:

cout<<"first\t";

case1:

cout<<"second\t";break;

default:

cout<<"hellow\t";

}

case2:

cout<<"third\n";

}

}

5、#include

voidswap(int*x,int&y);

voidmain()

{

inta(13),b;

b=a%5;

cout<<"a="<

swap(&a,b);

cout<<"a="<

}

voidswap(int*x,int&y)

{inttemp=*x;

*x=y;

y=temp;

}

四、综合编程题

1、编写程序求10!

+9!

+.....+3!

+2!

+1!

的和,其中计算阶乘要用函数实现;

2、编写程序,要求:

1)从键盘上输入6个整数放入数组a[6]中(用while循环实现);2)求出数组元素的最大值及数组的平均值,并将各元素、最大值及平均值输出到一文本文件中保存;3)然后打开该文件,读取其中内容并显示在屏幕上。

 

作业1参考答案

一、选择题

题目

1

2

3

4

5

6

7

8

9

10

答案

C

D

C

A

D

A

D

C

D

D

二、判断题

题目

1

2

3

4

5

6

7

答案

×

×

×

×

三、读程序并写出运行结果

1

1

2

4

8

8

2、

s=5

a=5

3、

s=8

a=4

4、

hellowthird

 

5、

a=13,b=3

a=3,b=13

四、综合编程题

1、#include

longintfac(inta);

voidmain()

{longsum=0;

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

sum+=fac(i);

cout<<"Thesumis"<

}

longintfac(inta)

{inttemp=1;

for(intj=1;j<=a;j++)

temp*=j;

returntemp;

}

2、#include

#include

doubleave(intp[]);//声明求和函数

intmax(intp[]);//声明求极大值函数

voidmain()

{inta[6],maxv;

doubleavev;

inti=0;

while(i<6)//通过循环从键盘给数组元素赋值

{cout<<"a["<

cin>>a[i];

i++;

}

maxv=max(a);//调用求和函数

avev=ave(a);//求极大值函数

ofstreammy_ostrm;//定义输出流

my_ostrm.open("c:

\\myfile.txt");//打开指定文件

if(!

my_ostrm)//文件打开不成功,报错并终止运行

{cout<<"openfileerror,abort!

";abort();}

for(i=0;i<6;i++)//往文件写入各数组元素的值

my_ostrm<

my_ostrm<

my_ostrm<

my_ostrm.close();//文件关闭

ifstreammy_istrm;//定义输入流

my_istrm.open("c:

\\myfile.txt");//打开指定文件

if(!

my_istrm)//文件打开不成功,报错并终止运行

{cout<<"openfileerror,abort!

";abort();}

for(i=0;i<6;i++)//往文件读取各数组元素的值

{my_istrm>>a[i];

cout<

my_istrm>>avev>>maxv;//读取平均值与最大值

cout<

my_istrm.close();

}

doubleave(intp[])/*求和函数的实现,形参用数组*/

{ints=0;

for(inti=0;i<6;i++)s+=p[i];

returns/6.0;}

intmax(intp[])/*求极大值函数的实现,形参用数组*/

{intmaxv=p[0];

for(inti=0;i<6;i++)if(p[i]>maxv)maxv=p[i];

returnmaxv;}

一、名词解释

1.继承性2.多态性3.抽象性4.重载5.封装性

二、选择题

1.关于对象概念的描述中,()是错误的。

A)对象就是C语言中的结构体B)对象是状态和操作的封装体

C)对象之间的信息传递是通过消息进行的D)对象是某个类的一个实例

2.假设MyClass是一个类,则该类的拷贝构造函数的声明语句为()

A)MyClass(MyClassp);B)MyClass&(MyClassp);

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

3.下列说法中正确的是()

A)类定义中只能说明函数成员的函数头,不能定义函数体

B)类中的成员函数可以在类体中定义,也可以在类体外定义

C)类中的函数成员在类体外定义时必须要与类声明在同一文件中

D)在类体之外定义的函数成员不能操作该类的私有数据成员

4.下列的各类函数中,()不是类的成员函数。

A.构造函数B.析构函数C.友元函数D.拷贝构造函数

5.下面叙述错误的是()

A)基类的protected成员在派生类中仍然是protected

B)基类的protected成员在public派生类中仍然是protected的

C)基类的protected成员在private派生类中是private的

D)基类的protected成员不能被派生类的对象访问

6.友元的作用是。

()

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

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

7.有关类的说法不正确的是_________。

()

A.类是一种用户自定义的数据类型

B.只有类中的成员函数才能存取类中的私有数据

C.在类中,如果不作特别说明,所有的数据均为私有类型

D.在类中,如果不作特别说明,所有的成员函数均为公有类型

8.有关析构函数的说法不正确的是__________。

()

A.析构函数有且只有一个B.析构函数无任何函数类型

C.析构函数和构造函数一样可以有形参

D.析构函数的作用是在对象被撤销时收回先前分配的内存空间

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

()

A.对象数组的下标是从0开始的B.对象数组的数组名是一个常量指针

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

D.对象数组的只能赋初值,而不能被赋值

10.设置虚基类的目的是()

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

三、不定项选择题

1、定义析构函数时,应该注意()

A、其名与类名完全相同B、返回类型是void类型

C、无形参,也不可重载D、函数体中必须有delete语句

2、每个类()构造函数。

A、只能有一个B、只可有公有的

C、可以有多个D、只可有缺省的

3、在一个类中可以对一个操作符进行()重载。

A、1种B、2种以下C、3种以下D、多种

4、在()情况下适宜采用inline定义内联函数。

A、函数体含有循环语句B、函数体含有递归语句

C、函数代码少、频繁调用D、函数代码多、不常调用

E、需要加快程序执行速度

5、在类中说明的成员可以使用关键字()进行修饰。

A、privateB、externC、autoD、publicE、register

6、如果类A被说明成类B的友元,则()。

A、类A的成员即类B的成员B、类B的成员即类A的成员

C、类A的成员函数不能访问类B的成员

D、类A的成员函数可以访问类B的成员

E、类B不一定是类A的友元

7、在派生类中重新定义虚函数时必须在()方面与基类保持一致。

A、参数个数B、参数类型C、参数名字D、操作内容E、返回类型

8、下列()的调用方式是引用调用。

A.形参是指针,实参是地址值

B.形参和实参都是变量

C.形参是数组名,实参是数组名

D.形参是引用,实参是变量

四、程序题

1.写出以下程序运行的结果。

()

#include

classCSample{

public:

CSample();

voidDisplay();

private:

inti;

staticintk;

};

CSample:

:

CSample(){

i=0;

k++;

}

voidCSample:

:

Display(){

cout<<"i="<

}

intCSample:

:

k=0;

intmain(){

CSamplea,b;

a.Display();

b.Display();

return0;

}

2.写出以下程序运行的结果。

()

#include

classCSample{

inti;

public:

CSample();

CSample(intval);

voidDisplay();

~CSample();

};

CSample:

:

CSample(){

cout<<"Constructor1"<

i=0;

}

CSample:

:

CSample(intval){

cout<<"Constructor2"<

i=val;

}

voidCSample:

:

Display(){

cout<<"i="<

}

CSample:

:

~CSample(){

cout<<"Destructor"<

}

intmain(){

CSamplea,b(10);

a.Display();

b.Display();

return0;

}

3.写出以下有关动态创建多维数组的程序运行的结果。

()

#include

voidmain()

{

float(*cp)[3][4];

cp=newfloat[2][3][4];

inti,j,k;

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

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

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

*(*(*(cp+i)+j)+k)=i*100+j*10+k;

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

{

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

{

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

cout<

cout<

}

cout<

}

}

4.写出以下有关求线段距离的程序运行的结果。

()

#include

#include

classPoint

{public:

Point(intxx=0,intyy=0){X=xx;Y=yy;cout<<"point构造函数被调用"<

Point(Point&p);

intGetX(){returnX;}

intGetY(){returnY;}

private:

intX,Y;

};

Point:

:

Point(Point&p)

{

X=p.X;

Y=p.Y;

cout<<"X="<

}

classDistance

{

public:

Distance(Pointxp1,Pointxp2);

doubleGetDis(){returndist;}

private:

Pointp1,p2;

doubledist;

};

//类的聚集的构造函数

Distance:

:

Distance(Pointxp1,Pointxp2)

:

p1(xp1),p2(xp2)

{

cout<<"Distance构造函数被调用"<

doublex=double(p1.GetX()-p2.GetX());

doubley=double(p1.GetY()-p2.GetY());

dist=sqrt(x*x+y*y);

}

//主函数

voidmain()

{

Pointmyp1(1,1),myp2(4,5);

Distancemyd(myp1,myp2);

cout<<"Thedistanceis:

";

cout<

}

5.写出以下有关虚基类及其构造函数的程序运行的结果。

()

#include

classB0//声明基类B0

{

public:

B0(intn){nV=n;cout<<"B0constructor"<

intnV;

voidfun(){cout<<"MemberofB0"<

};

classB1:

virtualpublicB0//B0为虚基类,派生B1类

{

public:

B1(inta):

B0(a){cout<<"B1constructor"<

intnV1;

};

classB2:

virtualpublicB0//B0为虚基类派生B2类

{

public:

B2(inta):

B0(a){cout<<"B2constructor"<

intnV2;

};

classD1:

publicB1,publicB2//派生类D1声明

{

public:

D1(inta=0):

B1(a),B0(a),B2(a){cout<<"D1constructor"<

intnVd;

voidfund(){cout<<"MemberofD1"<

};

voidmain()

{

D1d1;

d1.nV=2;

d1.fun();

}

6.请找出下列程序中的错误,并说明错误原因,以及如何改。

(程序的每一行前加上了行号,你可以通过行号来指出错误位置。

) 

1.classMyClass

2.{

3.public:

4.MyClass(intini){member=ini;}

5.voidSetMember(intm)const{member=m;}

6.staticintGetMember(){returnmember;}

7.private:

8.intmember;

9.};

10.voidmain()

11.{

12.MyClassobj1;

13.MyClassobj2(3);

14.obj1.member=5;

15.MyClass:

:

GetMember();

16.} 

作业2参考答案

一、简答题

1.继承是一种联结类与类的层次模型。

继承性是指特殊类的对象拥有其一般类的属性和行为的特性。

2.多态性是指类中同一函数名对应多个具有相似功能的不同函数,可以使用相同的调用方式来调用这些具有不同功能的同名函数的特性。

3.抽象就是忽略事物中与当前目标无关的非本质特征,更充分地注意与当前目标有关的本质特征。

4.函数重载是指具有相似功能的不同函数使用同一函数名,但这些同名函数的参数类型、参数个数、返回值、函数功能可以不同。

编译系统将根据函数参数的类型和个数来判断使用哪一个函数。

5.封装就是把对象的属性和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节。

其有两个含义:

一是封装性,另一个是“信息隐蔽”。

 

二、单选题:

ACBCAADCDB

三、多项选择

ACDCEADDEABED

四、程序阅读题:

1、

i=0,k=2

i=0,k=2

2、

Constructor1

Constructor2

i=0

i=10

Destructor

Destructor

3、

0123

10111213

20212223

100101102103

110111112113

120121122123

4、

point构造函数被调用

point构造函数被调用

X=4Y=5Point拷贝构造函数被调用

X=1Y=1Point拷贝构造函数被调用

X=1Y=1Point拷贝构造函数被调用

X=4Y

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

当前位置:首页 > 高中教育 > 高中教育

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2