全国计算机二级C++考试真题及答案.docx

上传人:b****2 文档编号:24209845 上传时间:2023-05-25 格式:DOCX 页数:14 大小:20.51KB
下载 相关 举报
全国计算机二级C++考试真题及答案.docx_第1页
第1页 / 共14页
全国计算机二级C++考试真题及答案.docx_第2页
第2页 / 共14页
全国计算机二级C++考试真题及答案.docx_第3页
第3页 / 共14页
全国计算机二级C++考试真题及答案.docx_第4页
第4页 / 共14页
全国计算机二级C++考试真题及答案.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

全国计算机二级C++考试真题及答案.docx

《全国计算机二级C++考试真题及答案.docx》由会员分享,可在线阅读,更多相关《全国计算机二级C++考试真题及答案.docx(14页珍藏版)》请在冰豆网上搜索。

全国计算机二级C++考试真题及答案.docx

全国计算机二级C++考试真题及答案

2006年9月全国计算机二级C++考试真题及答案

一、选择题〔每题2分,共70分〕

以下各题A〕、B〕、C〕、D〕四个选项中,只有一个选项是正确的,请将正确选项涂写

在答题卡相应位置上,答在试卷上不得分。

〔1〕以下选项中不符合良好程序设计风格的是______。

A〕、源程序要文档化B〕、数据说明的次序要标准化

C〕、防止滥用goto语句D〕、模块设计要保证高耦合,高内聚

〔2〕从工程管理角度,软件设计一般分为两步完成,它们是______。

A〕、概要设计与详细设计B〕、数据设计与接口设计

C〕、软件构造设计与数据设计D〕、过程设计与数据设计

〔3〕以下选项中不属于软件生命周期开发阶段任务的是______。

A〕、软件测试B〕、概要设计C〕、软件维护D〕、详细设计

〔4〕在数据库系统中,用户所见的数据模式为______。

A〕、概念模式B〕、外模式C〕、内模式D〕、物理模式

〔5〕数据库设计的四个阶段是:

需求分析、概念设计、逻辑设计和______。

A〕、编码设计B〕、测试阶段C〕、运行阶段D〕、物理设计

〔6〕设有如下三个关系表

以下操作中正确的选项是

A〕、T=R∩SB〕、T=R∪SC〕、T=R×SD〕、T=R/S

〔7〕以下表达中正确的选项是

A〕、一个算法的空间复杂度大,那么其时间复杂度也必定大

B〕、一个算法的空间复杂度大,那么其时间复杂度必定小

C〕、一个算法的时间复杂度大,那么其空间复杂度必定小

D〕、上述三种说法都不对

〔8〕在长为64的有序线性表中进展顺序查找,最坏情况下需要比拟的次数为______。

A〕、63B〕、64C〕、6D〕、7

〔9〕数据库技术的根本目标是要解决数据的______。

A〕、存储问题B〕、共享问题C〕、平安问题D〕、保护问题

〔10〕对以下二叉树:

进展中序遍历的结果是______。

A〕、ACBDFEGB〕、ACBDFGEC〕、ABDCGEFD〕、FCADBEG

〔11〕以下有关内联函数的表达中,正确的选项是______。

A〕、内联函数在调用时发生控制转移

B〕、内联函数必须通过关键字inline来定义

C〕、内联函数是通过编译器来实现的

D〕、内联函数体的最后一条语句必须是rennin语句

〔12〕以下情况中,不会调用拷贝构造函数的是______。

A〕、用一个对象去初始化同一类的另一个新对象时

B〕、将类的一个对象赋予该类的另一个对象时

C〕、函数的形参是类的对象,调用函数进展形参和实参结合时

D〕、函数的返回值是类的对象,函数执行返回调用时

〔13〕以下有关继承和派生的表达中,正确的选项是______。

A〕、如果一个派生类私有继承其基类,那么该派生类对象不能访问基类的保护成员

B〕、派生类的成员函数可以访问基类的所有成员

C〕、基类对象可以赋值给派生类对象

D〕、如果派生类没有实现基类的一个纯虚函数,那么该派生类是一个抽象类

〔14〕以下运算不能重载为友元函数的是______。

A〕、=()[]->B〕、+-++--

C〕、><>=<=D〕、+=-=*=/=

〔15〕关于在调用模板函数时模板实参的使用,以下表述正确的选项是______。

A〕、对于虚类型参数所对应的模板实参,如果能从模板函数的实参中获得一样的信息,

那么都可以省略

B〕、对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的假设干个参数,

F

CE

AD

B

G

那么都可以省略

C〕、对于虚拟型参数所对应的模板实参,假设能够省略那么必须省略

D〕、对于常规参数所对应的模板实参,任何情况下都不能省略

〔16〕以下关于输入流类成员函数getline()的描述中,错误的选项是______。

A〕、该函数是用来读取键盘输入的字符串的

B〕、该函数读取的字符串长度是受限制的

C〕、该函数读取字符串时,遇到终止符便停顿

D〕、该函数读取字符串时,可以包含空格

〔17〕以下符号中,正确的C++标识符是______。

A〕、enumB〕、2bC〕、foo-9D〕_32

〔18〕以下语句中,错误的选项是______。

A〕、constintbuffer=256;B〕、constdouble*point;

C〕、intconstbuffer=256;D〕、double*constpoint;

〔19〕if语句的语法格式可描述为

格式1:

if〔<条件>〕<语句>

格式2:

if〔<条件>〕<语句1>else<语句2>

关于上面的语法格式,以下表述中错误的选项是

A〕、<条件>局部可以是一个if语句,例如if(if(a=0)?

)?

B〕、<条件>局部可以是一个if语句,例如if(?

)if(?

)?

C〕、如果在<条件>前加上逻辑非运算符!

并交换<语句1>和<语句2>的位置,语句功

能不变

D〕、<语句>局部可以是一个循环语句,例如if(?

)while〔?

〕?

〔20〕有如下说明

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

那么数值为9的表达式是______。

A〕、*p+9`B〕、*(p+8)C〕、*p+=9D〕、p+7

〔21〕或下面的函数调用

fun(a+b,3,max(n-1)b)

那么fun的实参个数是______。

A〕、3B〕、4C〕、5D〕、6

〔22〕以下关键字不能用来声明类的访问权限的是______。

A〕、publicB〕、staticC〕、protectedD〕、private

〔23〕在公有继承的情况下,允许派生类直接访问的基类成员包括______。

A〕、公有成员B〕、公有成员和保护成员

C〕、公有成员、保护成员和私有成员D〕、保护成员

〔24〕关于运算符重载,以下表述中正确的选项是______。

A〕、C++已有的任何运算符都可以重载

B〕、运算符函数的返回类型不能声明为根本数据类型

C〕、在类型转换符函数的定义中不需要声明返回类型

D〕、可以通过运算符重载来创立C++中原来没有的运算符

〔25〕关于关键字class和typename,以下表述中正确的选项是______。

A〕、程序中的typename都可以替换为class

B〕、程序中的class都可以替换为typename

C〕、在模板形参表中只能用typename来声明参数的类型

D〕、在模板形参表中只能用class或typename来声明参数的类型

〔26〕有如下程序

#include

#include

usingnamespacestd;

intmain(){

count<

#include

usingnamespacestd;

classMyClass{

public:

MyClass(){cout<<’A〞;}

MyClass(charc{cout<

usingnamespacestd;

inti=1;

classFun{

public;

staticinti;

intvalue(){returni-1}

intvalue()const{returni+1;}

};

intFun;;i=2;

intmain(){

inti=3;

FunFun1

constFunfun2;

return0;

}

假设程序的输出结果是:

123

那么程序中下划线处遗漏的语句是______。

A〕、cout<

usingnamespacestd;

classObj{

staticinti;

public:

Obj(){i++;}

~Obj(){i--;}

staticintgetVal(){teturni;}

};

intObj:

:

i=0;

voidf(){Objob2;cout

Deleteob3;cout<

usingnamespacestd;

classBase{

protected;

Base(){cout<<’A’;}

Base(charc){cout<

usingnamespacestd;

classA{

public:

virtualVoidfuncl(){cout<<“A1〞;}

voidfune2(){cout<<“A2〞;}

};

classB:

publicA{

public:

voidfunc1(){cout<<“B1〞;}

voidfunc2(){cout<<“B2〞;}

};

Intmain(){

A*p=newB;

p->funcl();

p->func2();

retum0;

}

运行程序,屏幕上将显示输出______。

A〕、B1B2B〕、A1A2C〕、B1A2D〕、A1B2

二、填空题〔每空2分,共30分〕

请将每一个空的正确答案写在答题卡[1]~[15]序号的横线上,答在试卷上不得分。

〔1〕以下软件系统构造图

的宽度为[1]。

〔2〕[2]的任务是诊断和改正程序中的错误。

〔3〕一个关系表的行为[3]。

〔4〕按“行进后出〞原那么组织数据的数据构造是[4]。

〔5〕数据构造分为线性构造和非线性构造,带链的队列属于[5]。

〔6〕假设有定义语句:

int*a,b;,那么变量b的数据类型是[6]。

〔7〕数组a中的元素个数为n,以下语句的作用是将下标为i的元素移动到下标

为i-1的单元,其中1≤i<n。

例如,当n=4,a中原有数据为1,2,3,4时,那么移动后a

中元素为2,3,4,4。

请将语句补充完整:

For(inti=0;i

usingnamespacestd;

classFoo{

public:

Foo(intX){cout<<’A〞}

Foo(){}

};

intmain()

Foof[3],g(3);

return0;

}

〔10〕习惯性在以下程序的输出结果是42,请将画线处缺失的局部补充完整。

#include

Usingnamespaceatd;

ClassFoo{

intvalue;

public:

Foo():

value(0){}

VoidsetValue(intvalue)

{[10]=value;//给Foo的数据成员value赋值}voidprint(){cout<

usingnamespacestd;

classBase{

public:

Voidprint(){cout<<‘B’;}};

classDerived:

publicBase{

public

voidprint(){cout<<‘D’;}}

intmain()

{

Derived*pd=newDreived);

Base*pb=pd;

pb->print();

pd->print();

deletepd;

return0;

}

〔12〕在声明派生类时,如果不显式地给出继承方式,缺省的类继承方式是私有继承

private。

有如下类定义:

classBase{

protected:

voidfun(){}

};

ClassDerived:

Base{};

那么Base类中的成员函数fun(),在Derived类中的访问权限是[12]〔注意:

要求填

写private、protected或public中的一项〕。

〔13〕在MyClass类的定义中,对赋值运算符=进展重载。

请将画线处缺失的局部补充完整。

[13]MyClass:

:

operator=(constMyClassrhs)

{

if(this=&rhs)return*this;

value=rhs.value;

return*this;

}

〔14〕插入排序算法的主要思想是:

每次从未排序序列中取出一个数据,插入到已排序序列

中的正确位置,InsertSort类的成员函数sort()实现了插入排序算法,请将画线处缺失的局部

补充完整。

classInsertSort{

public:

InsertSort(int*a0,intn0):

a(a0),n(n0){}//参数组首地址,n是数组元素个数

voidsort()

{//此函数假设已排离序列初始化状态只包含a[0],未排序序列初始为a[1]?

a[n-1]

for(inti=1;i0;--j){

if(t>a[j-1])break;

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

a[j]=t;}}

protected:

int*a,n;//指针a用于存放数组首地址,n用于存放数组元素个数

};

〔15〕以下程序的输出结果是[15]

#include

usingnamespacestd;

classA{

inta

public:

A():

a(9){}

virtualvoidprint()const{cout

show(d1);

show(d2);

return0;}

〔31〕有如下类定义:

classMyBase{

intk;

public;

MyBase(intn=0):

k(n){}

intvalue()const{returnk;}

};

classMyDerived;MyBase{

intj;

public;

MyDerived(inti):

j(i){}

intgetK()const{returnk;}

intgutj()const{returnj;}

};

编译时发现有一处语法错误,对这个错误最正确准确的描述是

A〕、函数getK试图访问基类的私有成员变量K

B〕、在类MyDerived的定义中,基类名MyBase前缺少关键字public、protected或private

C〕、类MyDerived缺少一个无参的构造函数

D〕、类MyDerived的构造的数没有对基数数据成员K进展初始化

〔32〕在一个派生类对象完毕其生命周期时

A〕、先调用派生类的析构函数后调用基类的析构函数

B〕、先调用基类的析构函数后调用派生类的析构函数

C〕、如果基数没有定义析构函数,那么只调用派生类的析构函数

D〕、如果派生类没有定义析构函数,那么只调用基类的析构函数

〔33〕有如下的运算重载函数定义:

Doubleoperator+(inti,intk){returndouble(i+k);}

但定义有错误,对这个错误的最准确的描述是______。

A〕、+只能作为成员函数重载,而这里的+是作为非成员函数重载的

B〕、两个int型参数的和应该是int型,而这里将+的返回类型声明为double

C〕、没有将运算符重载函数声明为某个类的友元

D〕、C++已经提供了求两个int型数据之和运算符+,不能再定义同样的运算符

〔34〕语句ofstreamf〔“SALARY.DAT〞,ios_base:

:

app〕的功能是建立流对象f,并试图翻开

文件SALARY.DAT与f关联,而且______。

A〕、假设文件存在,将其置为空文件;假设文件不存在,翻开失败

B〕、假设文件存在,将文件指针定位于文件尾;假设文件不存在,建立一个新文件

C〕、假设文件存在,将文件指针定位于文件首;假设文件不存在,翻开失败

D〕、假设文件存在,翻开失败;假设文件不存在,建立一个新文件

〔35〕有如下程序

#include

usingnamespacestd;

classA{

public:

virtualVoidfuncl(){cout<<“A1〞;}

voidfune2(){cout<<“A2〞;}

};

classB:

publicA{

public:

voidfunc1(){cout<<“B1〞;}

voidfunc2(){cout<<“B2〞;}

};

Intmain(){

A*p=newB;

p->funcl();

p->func2();

retum0;

}

运行程序,屏幕上将显示输出______。

A〕、B1B2B〕、A1A2C〕、B1A2D〕、A1B2

二、填空题〔每空2分,共30分〕

请将每一个空的正确答案写在答题卡[1]~[15]序号的横线上,答在试卷上不得分。

〔1〕以下软件系统构造图

的宽度为[1]。

〔2〕[2]的任务是诊断和改正程序中的错误。

〔3〕一个关系表的行为[3]。

〔4〕按“行进后出〞原那么组织数据的数据构造是[4]。

〔5〕数据构造分为线性构造和非线性构造,带链的队列属于[5]。

〔6〕假设有定义语句:

int*a,b;,那么变量b的数据类型是[6]。

〔7〕数组a中的元素个数为n,以下语句的作用是将下标为i的元素移动到下标

为i-1的单元,其中1≤i<n。

例如,当n=4,a中原有数据为1,2,3,4时,那么移动后a

中元素为2,3,4,4。

请将语句补充完整:

For(inti=0;i

〔8〕递归函数f的定义如下:

intf(intn)

{

If(n<=1)return1;//递归完毕情况

elsereturnn*f(n-2);//递归}那么函数调用语句f(5)的返回值是[8]。

〔9〕创立对象数组时,对数组的每一个元素都将调用一次构造函数,如果没有显式给

出数组元素的初值,那么调用缺省构造函数,以下程序涉及到对象数组的创立和单个对象的创

建,其输出结果是[9]。

#include

usingnamespacestd;

classFoo{

public:

Foo(intX){cout<<’A〞}

Foo(){}

};

intmain()

Foof[3],g(3);

return0;

}

〔10〕习惯性在以下程序的输出结果是42,请将画线处缺失的局部补充完整。

#include

Usingnamespaceatd;

ClassFoo{

intvalue;

public:

Foo():

value(0){}

VoidsetValue(intvalue)

{[10]=value;//给Foo的数据成员value赋值}voidprint(){cout<

};

Intmain()

{

Foof;

f.setValue(42);

f.print();

retum0;

}

〔11〕如果不能使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是

只能访问从基数继承的成员,以下程序没有使用多态机制,其输出结果是[11]。

#include

usingnamespacestd;

classBase{

public:

Voidprint(){cout<<‘B’;}};

classDerived:

publicBase{

public

voidprint(){cout<<‘D’;}}

intmain()

{

Derived*pd=newDreived);

Base*pb=pd;

pb->print();

pd->print();

deletepd;

return0;

}

〔12〕在声明派生类时,如果不显式地给出继承方式,缺省的类继承方式是私有继承

private。

有如下类定义:

classBase{

protected:

voidfun(){}

};

ClassDerived:

Base{};

那么Base类中的成员函数fun(),在Derived类中的访问权限是[12]〔注意:

要求填

写private、protected或public中的一项〕。

〔13〕在MyClass类的定义中,对赋值运算符=进展重载。

请将画线处缺失的局部补充完整。

[13]MyClass:

:

operator=(constMyClassrhs)

{

if(this=&rhs)return*this;

value=rhs.value;

return*this;

}

〔14〕插入排序算法的主要思想是:

每次从未排序序列中取出一个数据,插入到已排序序列

中的正确位置,InsertSort类的成员函数sort()实现了插入排序算法,请将画线处缺失的局部

补充完整。

classInsertSort{

public:

InsertSort(int*a0,intn0):

a(a0),n(n0){}//参数组首地址,n是数组元素个数

voidsort()

{//此函数假设已排离序列初始化状态只包含a[0],未排序序列初始为a[1]?

a[n-1]

for(inti=1;i

intj;

for([14];j>0;--j){

if(t>a[j-1])break;

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

a[j]=t;}}

protected:

int*a,n;//指针a用于存放数组首地址,n用于存放数组元素个数

};

〔15〕以下程序的输出结果是[15]

#include

usingnamespacestd;

classA{

inta

public:

A():

a(9){}

virtualvoidprint()const{cout<

};

classB:

publicA{

charb;

public:

B(){b=‘S’;}

voidprint()const{cout<

};

voidshow(Aa&X){X,print()}

intmain()

{Ad1;*p;

Bd2;

p=&d2;

d1,print();

d2,print();

p->print();

show(d1);

show(d2);

return0;}

参考答案:

一、选择题

01、D02、A03、C04、B05、D

06、C07、D08、D09、B10、A

11、C12、D13、D14、A15、D

21、A22、B23、B24、C25、B

26、D27、D28、A29、A30、B

31、A32、B33、C34、B35、C

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

当前位置:首页 > 人文社科 > 设计艺术

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

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