全国计算机等级考试二级笔试样卷C++语言程序设计.docx

上传人:b****7 文档编号:11043931 上传时间:2023-02-24 格式:DOCX 页数:25 大小:35.33KB
下载 相关 举报
全国计算机等级考试二级笔试样卷C++语言程序设计.docx_第1页
第1页 / 共25页
全国计算机等级考试二级笔试样卷C++语言程序设计.docx_第2页
第2页 / 共25页
全国计算机等级考试二级笔试样卷C++语言程序设计.docx_第3页
第3页 / 共25页
全国计算机等级考试二级笔试样卷C++语言程序设计.docx_第4页
第4页 / 共25页
全国计算机等级考试二级笔试样卷C++语言程序设计.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

全国计算机等级考试二级笔试样卷C++语言程序设计.docx

《全国计算机等级考试二级笔试样卷C++语言程序设计.docx》由会员分享,可在线阅读,更多相关《全国计算机等级考试二级笔试样卷C++语言程序设计.docx(25页珍藏版)》请在冰豆网上搜索。

全国计算机等级考试二级笔试样卷C++语言程序设计.docx

全国计算机等级考试二级笔试样卷C++语言程序设计

全国计算机等级考试二级笔试样卷C++语言程序设计

一、选择题(

(1)~(35)每小题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)设有如下三个关系表

R

S

T

A

B

C

A

B

C

m

1

3

m

1

3

n

n

1

3

下列操作中正确的是

A)T=R∩SB)T=R∪S

C)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)内联函数函数体的最后一条语句必须是return语句

(12)下列情况中,不会调用拷贝构造函数的是

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

B)将类的一个对象赋值给该类的另一个对象时

C)函数的形参是类的对象,调用函数进行形参和实参结合时

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

(13)下列有关继承和派生的叙述中,正确的是

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

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

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

D)如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类

(14)下列运算符不能重载为友元函数的是

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

C)><>=<=D)+=-=*=/=

(15)关于在调用模板函数时模板实参的使用,下列表述正确的是

A)对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略

B)对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,则都可以省略

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+9B)*(p+8)C)*p+=9D)p+8

(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(){

cout<

cout<<12.345<<___________<<34.567;

return0;

}

若程序的输出是:

**12.345**34.567

则程序中下划线处遗漏的操作符是

A)setprecision(3)B)fixedC)setfill('*')D)setw(8)

(27)有如下程序

#include

#include

usingnamespacestd;

classMyClass{

public:

MyClass(){cout<<'A';}

MyClass(charc){cout<

~MyClass(){cout<<'B';}

};

intmain(){

MyClassp1,*p2;

p2=newMyClass('X');

deletep2 ;

return0;

}

执行这个程序屏幕上将显示输出

A)ABXB)ABXBC)AXBD)AXBB

(28)有如下程序

#include

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<<

:

i<

B)cout<

:

i<

C)cout<<<

:

i;

D)cout<

(29)有如下程序:

#include

usingnamespacestd;

classObj{

staticinti;

public:

Obj(){i++;}

~Obj(){i--;}

staticintgetVal(){returni;}

};

intObj:

:

i=0;

voidf(){Objob2;cout<

intmain(){

Objob1;

f();

Obj*ob3=newObj;cout

deleteob3;cout

}

程序的输出结果是

A)232B)231C)222D)221

(30)有如下程序

#include

usingnamespacestd;

classBase{

protected:

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

Base(charc){cout<

};

classDerived:

publicBase{

public:

Derived(charc){cout<

};

intmain(){

Derivedd1('B');

return0;

}

执行这个程序屏幕上将显示输出

A)BB)BAC)ABD)BB

(31)有如下类定义:

classMyBase{

intk;

public:

MyBase(intn=0):

k(n){}

intvalue()const{returnk;}

};

classMyDerived:

MyBase{

intj;

public:

MyDerived(inti):

j(i){}

intgetK()const{returnk;}

intgetJ()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型,而这里将+的返回类型声明为doubleC)没有将运算符重载函数声明为某个类的友元

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

(34)语句ofstreamf("SALARY.DAT",ios_base:

:

app);的功能是建立流对象f,并试图打开文件SALARY.DAT与f关联,而且

A)若文件存在,将其置为空文件;若文件不存在,打开失败

B)若文件存在,将文件指针定位于文件尾;若文件不存在,建立一个新文件

C)若文件存在,将文件指针定位于文件首;若文件不存在,打开失败

D)若文件存在,打开失败;若文件不存在,建立一个新文件

(35)有如下程序

#include

usingnamespacestd;

classA{

public:

virtualvoidfunc1(){cout<<"A1";}

voidfunc2(){cout<<"A2";}

};

classB:

publicA{

public:

voidfunc1(){cout<<"B1";}

voidfunc2(){cout<<"B2";}

};

intmain(){

A*p=newB;

p->func1();

p->func2();

return0;

}

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

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 a[i]=a[【7】];

(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

usingnamespacestd;

classFoo{

intvalue;

public:

Foo():

value(0){}

voidsetValue(intvalue)

{【10】=value;//给Foo的数据成员value赋值}

voidprint(){cout<

};

intmain()

{

Foof;

f.setValue(42);

f.print();

return0;

}

(11)如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员。

下列程序没有使用多态机制,其输出结果是【11】。

#include

usingnamespacestd;

classBase{

public:

voidprint(){cout<<'B';}};

classDerived:

publicBase{

public:

voidprint(){cout<<'D';}};

intmain()

{

Derived*pd=newDerived();

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=(constMyClass&rhs)

{

if(this==&rhs)return*this;

value=rhs.value;

return*this;

}

(14)插入排序算法的主要思想是:

每次从未排序序列中取出一个数据,插入到已排序序列中的正确位置。

InsertSort类的成员函数sort()实现了插入排序算法。

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

classInsertSort{

public:

InsertSort(int*a0,intn0):

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

voidsort()

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

for(inti=1;i

intt=a[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(A&x){x.print();}

intmain()

{Ad1,*p;

Bd2;

p=&d2;

d1.print();

d2.print();

p->print();

show(d1);

show(d2);

return0;}

:

i<

一、选择题(

(1)~(35)每小题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)设有如下三个关系表

R

S

T

A

B

C

A

B

C

m

1

3

m

1

3

n

n

1

3

下列操作中正确的是

A)T=R∩SB)T=R∪S

C)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)内联函数函数体的最后一条语句必须是return语句

(12)下列情况中,不会调用拷贝构造函数的是

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

B)将类的一个对象赋值给该类的另一个对象时

C)函数的形参是类的对象,调用函数进行形参和实参结合时

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

(13)下列有关继承和派生的叙述中,正确的是

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

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

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

D)如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类

(14)下列运算符不能重载为友元函数的是

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

C)><>=<=D)+=-=*=/=

(15)关于在调用模板函数时模板实参的使用,下列表述正确的是

A)对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略

B)对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,则都可以省略

C)对于虚拟类型参数所对应的模板实参,若能够省略则必须省略

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

(16)下列关于输入流类成员函数getline()的描述中,错误的是

A

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

当前位置:首页 > 高等教育 > 历史学

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

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