C++试题Word格式.docx

上传人:b****8 文档编号:22520712 上传时间:2023-02-04 格式:DOCX 页数:45 大小:33.71KB
下载 相关 举报
C++试题Word格式.docx_第1页
第1页 / 共45页
C++试题Word格式.docx_第2页
第2页 / 共45页
C++试题Word格式.docx_第3页
第3页 / 共45页
C++试题Word格式.docx_第4页
第4页 / 共45页
C++试题Word格式.docx_第5页
第5页 / 共45页
点击查看更多>>
下载资源
资源描述

C++试题Word格式.docx

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

C++试题Word格式.docx

sizeof(a);

i++)

if(m>

a[i])

m=a[i];

cout<

m<

}

程序运行后输出结果错误,导致错误结果的程序行是【】 

A.intm=a[0];

 

B.for(inti=1;

i++) 

C.if(m>

a[i]) 

D.m=a[i];

4、下列选项中正确的语句组是【】 

A.chars[8];

s={″Hello″};

B.char*s;

C.chars[]=″Hello″;

D.char*s;

s=″Hello″;

5、有以下程序段

inta=5,*b,**c;

c=&

b;

b=&

a;

}程序在执行了c=&

语句后,表达式:

**c的值是【】

A.变量a的地址 

B.变量b中的值 

C.变量a中的值 

D.变量b的地址

6、分析下面的程序

classA{

public:

virtualvoidprint(){cout<

"

A"

l;

}

};

classB:

publicA{

voidprint(){cout<

B"

;

voidmain(){

Aa,*pa;

Bb,*pb;

pa=(A*)&

pa->

print();

pb=(B*)&

pb->

}程序的运行结果为【】

A.编译错误B.ABC.BAD.AA

7、在Windows环境下,分析程序的输出结果【】

main(){

charbuf1[20]=”Hello”;

charbuf2[20]=”world”;

if(buf1>

buf2)

buf1<

else

buf2<

A.编译错误B.HelloC.worldD.结果不确定

8、分析下面的程序,运行结果为【】

inta[]={1,2,3,4,5,6,7,8,9};

int*p=a;

*p++;

*(p+1);

A.13B.22C.12D.23

9、下面函数中能够体现面向对象的多态性的是【】

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

10、构造一个类A,在该类中的将“+=”操作符重载为友元函数,则下面语法正确的是【】

A.friendAoperator+=(A&

A&

B.friendA&

operator+=(A,A)

C.friendA&

operator+=(A&

D.A&

11、下面关于数组作为参数传递的函数原型,错误的是【】

A.voidfunc(intarr[]);

B.voidfunc(intarr[][4]);

C.voidfunc(int*arr);

D.voidfunc(intarr[4]);

12、下列哪些函数有返回值【】

A.转换运算符函数B.构造函数C.析构函数D.赋值运算符函数

13、对于下面的代码,哪一个和a[i]不等价【】

inta[10];

int*ptr=a;

A.*(a+i)B.*(ptr+i)C.*ptr+iD.ptr[i]

14、多继承的析构顺序是【】

A.类自己内嵌对象虚拟基类非虚拟基类

B.类自己内嵌对象非虚拟基类虚拟基类

C.非虚拟基类虚拟基类内嵌对象类自己

D.虚拟基类非虚拟基类内嵌对象类自己

15、如果让类的所有成员在类的范围内共享某一个函数,则声明该函数为【】

A.staticB.friendC.virtualD.const

16、以下对于析造函数说法中,正确的是【】

A.每个类必须自己定义一个析构函数B.析造函数需要在程序中调用

C.一个类中只能定义一个析造函数D.析构函数可以有形式参数

17、下面哪一个变量占用了内存空间【】

A.enumCOLOR{RED,BLUE,GREEN};

中的COLOR

B.inta;

int&

r=a;

中的变量r

C.constint*p;

中的p

D.structStudent

{

intNO;

charname[20];

中的Student;

18、构造一个类时,类中有些函数系统缺省会进行构造,那么下面哪一类系统不会产生默认的函数【】

A.构造函数B.友元函数C.拷贝构造函数D.赋值运算符

19、在类的继承过程中,哪些函数能够被继承【】

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

20、下面程序的输出结果是【】

inta=1,b=10;

int&

r=a;

int*p=&

*p=r++;

cout<

"

A.1,10B.2,10C.1,2D.2,1

二、填空题

1、通常C++的算法和程序结构有___________、___________、____________三种。

2、在C++中有二种参数传递方式:

值传递和_______________。

3、重载函数的特征______________________________________。

4、当建立一个新对象时,程序自动调用_______________;

当销毁一个对象时程序自动调用_____________。

5、如果类名A,则该类的拷贝构造函数原型为______________。

6、定义类的成员时,有哪三种访问控制修饰符____________、___________、__________。

7、至少包含一个___________的类称为抽象类。

8、通常情况下,内存被分成____________、____________、____________、__________4部分,其中,const变量保存在______________,局部变量保存在_______________。

9、对象的三大基本特性是____________、______________、封装性。

三、分析下列程序,写出程序的运行结果

1、voidmain()

intn=1;

for(inti=1;

i<

11;

i+=n)

{

n++;

if(i%3==2)

continue;

}

________________

________________

2、voidfn(intb)

staticinta=10;

cout<

a--<

++b<

voidmain()

for(inti=0;

4;

i++)

fn(i);

四、补充下面的程序

1、已知整型数组a中的元素按照从小到大排列,现任意向数组中插入一整数,使得该数组依然保持从小到大排列。

该函数原型如下,请将其补充完全。

voidinsert(intx,inta[],intlen)

{

for(inti=0;

len;

___[1]___//获取x插入的位置

break;

for(intj=len;

j>

i;

j--)

___[2]____;

//将x插入位置的数组元素后移

____[3]____;

//将x插入该位置

2、下面的函数将字符串s中字符逐一颠倒,该函数使用指针t指向字符串最后一个字符,然后首尾字符相互交换的方法实现,比如s=“Hello”,经过该函数后s=“olleH”,将下面的算法补充完全。

voidreverse(char*s)

charc;

char*t;

for(t=s+strlen(s)-1;

___[1]____;

t--,s++)

ch=*s;

___[2]_____;

//字符首尾字符交换

___[3]_____;

}key:

t<

s

*s=*t;

*t=ch;

3、以下的程序将输入的十进制整数n转换为b进制数(b<

=8),并将转换结果输出。

转换的方法是"

除b取余"

voidtransfer(intm,intk)

inta[20];

m>

0;

a[i]=___[3]____;

m/=k;

________[4]__________;

a[j];

intb,n;

请输入十进制数n和进制数b\n"

___[1]____;

___[2]____;

五、分析下面的程序,按要求将完成下列程序。

1、#include<

string.h>

A(char*pName="

noname"

name=newchar[strlen(pName)+1];

strcpy(name,pName);

protected:

char*name;

Aa;

Ab(a);

1)程序运行中会产生内存泄漏,为什么?

2)请添加一个析构函数,避免1)中的问题

3)main()函数中调用了拷贝构造函数,当只添加析构函数时,程序会出现什么问题?

添加一个拷贝构造函数,避免该问题。

2、#include<

iostream.h>

A(){}

Aoperator++(int)

Atemp(*this);

a++;

returntemp;

voiddisplay(){cout<

inta;

Aa;

(++a).display();

a++.display();

1)该程序编译出错,请判断程序出错的位置

2)将该程序补充完全,使得编译正确。

3)如果要使程序的运行结果为1和1,那么程序还需要如何改动?

答案

一、

DBCCCCBABCDDCBACCBAD

二、

地址传递

函数名称相同,参数类型或个数不同

构造函数、析构函数

A(A&

a)

public、protected、private

纯虚函数

堆区栈区全局数据区代码区全局数据区栈区

多态继承

三、

13610

10,19,28,37,4

四、

1if(x<

a[j]=a[j-1];

a[i]=x;

2t<

3.cin>

n>

transfer(n,b);

m%k

for(intj=i-1;

=0;

1、

1)对象在构造时申请了堆内存,但析构函数并没有释放,因此造成内存泄漏。

2)~A(){

delete[]name;

3)b和a共用了同一段内存,调用析构函数时,同一段内存释放了两次,出现内存错误。

这是浅拷贝带来的问题。

a){

name=newchar[strlen(a.Name)+1];

strcpy(name,a.Name);

2、

1)(++a).display();

出错

2)A&

operator++(){

a++;

return*this;

3)构造函数改为:

A():

a(0){}

C++程序设计期终考试试题

一、填空题(每空1分)

9、面向对象程序设计的三个主要特性是封装性______________和_______________。

10、类的数据成员是描述对象的__________________,类的成员函数描述的是对象的___________________。

11、分数

(值为3.5)用C++表达式应该表示为_____________________。

12、如果需要在输出语句中使用格式控制符,必须包含的头文件是_________________。

13、通过语句StuA.setname(“Wang”);

可以将Student类对象StuA的名字设置为Wang,则类的成员函数setname的原型是_________________________。

14、在C++中,执行cout<

012+021<

所显示的结果是___________________。

15、在C++中,表达式return10&

&

-10;

的返回值是___________________。

16、在类的定义中,类的成员默认的访问控制方式是____________________。

17、在C++中,如果函数Fun的形式参数是两个int类型的引用,返回值也是int型,这个函数的原型应该写为:

_______________________。

18、每个类都有自己的构造函数、拷贝构造函数和析构函数,这三类函数中,不可以指定为虚函数的是__________________和_______________________。

19、如果A1是Base类的一个对象,则执行语句BaseA2=A1;

将会自动调用Base类的_______________________。

20、至少包含一个纯虚函数的类称为___________________。

21、定义变量是静态类型所使用的关键字是_________________,说明变量是外部变量的关键字是___________________。

22、若有for循环语句for(intx=0;

x=3;

x++){;

},此循环语句执行的次数将是_无限___________次。

23、派生类对象要能够访问基类成员的条件有两个,即_____________________________和_______________________________。

二、选择题(每题1分):

1、采用C++面向对象程序设计来设计软件有许多优点,但是不包括【】。

A.有利于信息隐藏和数据安全

B.有利于软件重用,提高软件开发效率

C.提高模块独立性,有利于软件维护

D.降低对于软件开发人员的要求

2、以下定义的C++实数中,不正确的是【】

A.floata=3.54e2B.floata=1.0e2

C.floata=.54e2D.floata=3.54e2.0

3、在字符串中使用以下字符(字符组合)时,不需要采用转义字符的是【A】。

A.\\B.'

C.\D."

4、语句for(inti=1;

i++<

);

虽然正确,但可读性差,可以采用的等价语句是【B】。

A.for(inti=2;

5;

i++);

B.for(inti=1;

C.for(inti=1;

=4;

D.for(inti=1;

3;

5、若已定义char*p=”abcd”,*q=”cdef”;

以下语句中会出现运行错误的是【D】。

A.cout<

p;

B.p=”efgh”;

C.p=q;

D.*p=’P’;

//

6、已声明原型voidfunc(intarr[]);

在函数func中要知道数组arr的大小,可使用【】。

E.sizeof(arr)/sizeof(int)

F.sizeof(arr[])/sizeof(int)

G.sizeof(intarr[])/sizeof(int)

H.其他方法,以上方法都不正确

7、为了判断两个字符串s1和s2是否相等,应当使用【C】。

A.if(s1==s2)B.if(s1=s2)

C.if(!

strcmp(s1,s2))D.if(strcmp(s1,s2))

8、若已定义intk=1;

然后不断地执行k++操作,k值变化的趋势将是【】。

A.k值不断增加到最大值,显示溢出错误后停止

B.从1增加到最大值,再从-1减少到负数最小值,周而复始

C.从1增加到最大值,再从负数最小值增加到-1,周而复始

D.从1增加到最大值,再减少到1,周而复始;

9、设有定义语句

intA[5]={2,4,6,8,5},*p=A,i;

要求依次输出A数组5个元素的值,不能完成此操作的语句是【】。

A.for(i=0;

i++)cout<

*(p++);

B.for(i=0;

*(p+i);

C.for(i=0;

p[i];

D.for(i=0;

(*p)++;

10、下列函数中,不是类的成员函数的是【】。

A.友元函数B.析构函数

C.将数据转换为类的对象的转换函数D.拷贝构造函数

11、以下对于构造函数说法中,正确的是【】。

A.构造函数通常是自动调用的B.构造函数返回值可以是void型

C.无参数构造函数可以不止一个D.一个类中只能定义一个构造函数

12、类的对象可以访问的类的成员必须是【】类型。

A.autoB.privateC.protectedD.public

13、以下对于析构函数说法中,正确的是【】。

A.每个类必须自己定义一个析构函数B.析构函数可以有形式参数

C.一个类中只能定义一个析构函数D.析构函数需要在程序中调用

14、要在Clock类外定义一个构造函数,类中包含一个整型的数据成员m。

以下4种函数头表示中,正确的是【】。

A.voidClock:

:

Clock(intm)B.Clock:

Clock(intm)

C.intClock:

Clock(intm)D.Clock(intm=0)

15、如果已经定义了Point类的静态数据成员:

staticintk;

对这个数据成员初始化的正确表示是【】。

A.intPoint:

k=0;

B.staticintk=0;

C.staticintPoint:

D.intstaticPoint:

k=0;

16、友元函数和类的成员函数相同的地方是【】。

A.都可以通过类的对象来调用B.都可以访问类的私有成员

C.都可以通过类的对象指针来调用D.都有this指针

17、关于new运算符的下列描述中,错误的是【D】。

A.可以用来动态地创建对象或变量

B.使用它来创建对象时要调用构造函数

C.使用它创建对象时可以指定初始值

D.使用它创建对象数组时可以指定初始值

18、关于派生类newClass的以下声明中,正确的是【】。

A.classnewClass:

publicclassBase{….};

B.classnewClass:

publicBase01,Base02{….};

C.classnewClass:

publicBase01,publicBase02{….}

D.classnewClass:

publicclassBase01,publicBase02{….};

19、以下操作中不可以进行的是【】。

A.将派生类对象赋值给基类对象

B.将基类对象赋值给派生类对象

C.用基类对象的地址初始化基类的指针

D.用派生类对象的地址初始化基类的指针

20、以下说法中错误的是【】。

A.不可以定义抽象类的对象

B.不可以定义抽象类对象的指针

C.抽象类中必须定义纯虚函数

D.纯虚函数返回值可以不是void类型

三、分析题(每题4分):

按要求回答问题

1、以下程序的输出结果是____________________

程序的功能是_______________________________

#include<

iostream>

usingnamespacestd;

{intn=0;

for(inti=1;

20;

if((i%3))

continue;

n+=i;

”n=”<

n<

2、以下程序的输出结果是____________________

_____________________

#i

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

当前位置:首页 > 表格模板 > 表格类模板

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

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