最新全国计算机等级考试二级c++题库6共17套.docx

上传人:b****5 文档编号:27622124 上传时间:2023-07-03 格式:DOCX 页数:35 大小:109.07KB
下载 相关 举报
最新全国计算机等级考试二级c++题库6共17套.docx_第1页
第1页 / 共35页
最新全国计算机等级考试二级c++题库6共17套.docx_第2页
第2页 / 共35页
最新全国计算机等级考试二级c++题库6共17套.docx_第3页
第3页 / 共35页
最新全国计算机等级考试二级c++题库6共17套.docx_第4页
第4页 / 共35页
最新全国计算机等级考试二级c++题库6共17套.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

最新全国计算机等级考试二级c++题库6共17套.docx

《最新全国计算机等级考试二级c++题库6共17套.docx》由会员分享,可在线阅读,更多相关《最新全国计算机等级考试二级c++题库6共17套.docx(35页珍藏版)》请在冰豆网上搜索。

最新全国计算机等级考试二级c++题库6共17套.docx

最新全国计算机等级考试二级c++题库6共17套

最新全国计算机等级考试二级c++题库6(共17套)

第六套

1、下列叙述中正确的是______。

A、栈是"先进先出"的线性表

B、队列是"先进后出"的线性表

C、循环队列是非线性结构

D、有序线性表既可以采用顺序存储结构,也可以采用链式存储结构

栈是一种特殊的线性表,这种线性表只能在固定的一端进行插入和删除操作,允许插入和删除的一端称为栈顶,另一端称为栈底。

一个新元素只能从栈顶一端进入,删除时,只能删除栈顶的元素,即刚刚被插入的元素。

所以栈又称"后进先出"表,所以选项A是错误的。

队列可看作是插入在一端进行,删除在另一端进行的线性表,允许插入的一端称为队尾,允许删除的一端称为队头。

在队列中,只能删除队头元素,队列的最后一个元素一定是最新入队的元素。

因此队列又称"先进先出"表,所以选项B是错误的。

循环队列是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。

它的逻辑结构仍然是线性结构,所以选项C是错误的。

有序线性表既可以采用顺序存储结构,也可以采用链式存储结构,所以选项D是正确的。

故本题答案为D。

2、将E-R图转换为关系模式时,实体和联系都可以表示为______。

A、属性

B、键

C、关系

D、域

将E-R图转换为关系模式时,实体和联系都可以表示成关系,E-R图中属性也可以转换成关系的属性。

实体集也可以转换成关系。

故本题答案为C。

3、下面叙述中错误的是______。

A、软件测试的目的是发现错误并改正错误

B、对被调试的程序进行"错误定位"是程序调试的必要步骤

C、程序调试通常也称为Debug

B、数据库系统设计

C、数据库维护

D、数据库管理员培训

数据库应用系统是数据库系统再加上应用软件及应用界面这三者所组成,具体包括:

数据库、数据库管理系统、数据库管理员、硬件平台、软件平台、应用软件、应用界面。

在数据库应用系统中的一个核心问题就是设计一个能满足用户要求,性能良好的数据库,这就是数据库设计。

所以选项A是正确的。

故本题答案为A。

8、支持子程序调用的数据结构是______。

A、栈

B、树

C、队列

D、二叉树

子程序调用是一种层次关系,子程序调用功能模块,调用功能模块的个数也不确定,可以是一个,也可以是多个。

选项A、C中元素之间是一种前后件关系,前后元素之间没有层次之分,每个结点有一个前件也只有一个后件。

二叉树是一种很有用的非线性结构,二叉树不同于树形结构。

二叉树具有以下两个特点:

①非空二叉树只有一个根结点;②每一个结点最多有两棵子树,且分别称为该结点的左子树与右子树。

选项D规定每个结点只能有两个后件。

在子程序调用中,调用的功能模块可以是多个,可以调用超过两个功能模块。

所以选项A、C、D均不正确。

故本题答案为B。

9、某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是______。

A、10

B、8

C、6

D、4

在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。

本题中度为2的结点数为5,故叶子结点数为5+1=6个。

故本题答案为C。

10、软件按功能可以分为:

应用软件、系统软件和支撑软件(或工具软件)。

下面属于应用软件的是______。

A、编译程序

B、操作系统

C、教务管理系统

D、汇编程序

软件按功能可以分为:

应用软件、系统软件、支撑软件(或工具软件)。

应用软件是为解决特定领域的应用而开发的软件。

例如,事务处理软件、工程与科学计算软件,实时处理软件,嵌入式软件,人工智能软件等应用性质不同的软件。

因此选项C教务管理系统属于应用软件。

系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。

如操作系统,编译程序,汇编程序,网络软件,数据库管理系统等。

因此选项A、B、D都属于系统软件。

故本题答案为C。

11、有如下程序:

#include

usingnamespacestd;

classONE{

intc;

public:

ONE():

c(0){cout<<1;}

ONE(intn):

c(n){cout<<2;}

};

classTWO{

ONEone1;

ONEone2;

public:

TWO(intm):

one2(m){cout<<3;}

};

intmain(){

TWOt(4);

return0;

}

运行时的输出结果是______。

A、3

B、23

C、123

D、213

本题主要考查了成员对象。

当一个类的成员是另外一个类的对象时,该对象就称为成员对象。

建立一个类的对象时,要调用它的构造函数。

如果这个类有成员对象,要首先执行所有的成员对象的构造函数,当全部成员对象的初始化都完成之后,再执行当前类的构造函数体。

当类中有多个成员对象时,要按照定义成员对象的顺序建立各个子对象,即成员对象构造函数的执行顺序仅与成员对象在类中声明的顺序有关,而与成员初始化列表中给出的成员对象的顺序无关。

如果在构造函数的成员初始化列表中没有给出对成员对象的初始化,则表示使用成员对象的缺省构造函数。

如果所有的成员对象都是调用缺省构造函数建立的,那么该类的构造函数的成员初始化列表可以省略。

类TWO的数据成员是类ONE的对象one1和one2,main()函数中首先创建类TWO的对象t并提供初始值4,先执行成员对象one1的构造函数体,输出1;再执行成员对象one2的构造函数体,输出2,最后执行类TWO的构造函数体,输出3。

因此本题程序运行时的输出结果是123。

故本题答案为C。

12、假设下列语句都是程序运行后首次执行的输出语句,其中输出结果与另外三条语句不同的语句是______。

A、cout<

B、cout<

C、cout<<123<

D、cout<

本题主要考查了输出格式控制。

操纵符setw为紧随其后的输出项指定输出宽度,在一个域输出完后,域宽度恢复成它的默认值0,输出项默认对齐方式为右对齐,操纵符setfill的作用是设置填充字符。

因此选项A、选项B和选项D的输出结果都为123******321,而选项C的输出结果为123***321。

故本题答案为C。

13、已知表达式++a中的"++"是作为成员函数重载的运算符,则与++a等效的运算符函数调用形式为______。

A、a.operator++

(1)

B、operator++(a)

C、operator++(a,1)

D、a.operator++()

本题主要考查了运算符重载。

C++把重载的运算符视为特殊的函数,称为运算符函数,函数名就是在运算符前加上保留字operator。

一般而言,如果a是类X的对象,在类X中重载前置单目运算符@,则下列两种函数调用方法是等价的:

第一种是通过运算符构成表达式的形式进行调用,即@a;

第二种是像一般函数那样用函数名进行调用:

当把@作为成员函数重载时,调用形式为a.operator@();当把@作为非成员函数重载时,调用形式为operator@(a)。

本题是把前置单目运算符++重载为成员函数,因此与表达式++a等效的表示为a.operator++()。

故本题答案为D。

14、已知有数组定义

chara[3][4];

下列表达式中错误的是______。

A、a[2]="WIN"

B、strcpy(a[2],"WIN")

C、a[2][3]='W'

D、a[0][1]=a[0][1]

本题主要考查了数组。

如果把二维数组a[3][4]看作3行4列矩阵,a[2]是第三行数据的首地址,是一个常量,不能对其赋值。

本题答案为A。

15、运算符重载时不需要保持的性质是______。

A、操作数个数

B、操作数类型

C、优先级

D、结合性

本题主要考查了运算符重载。

重载的运算符应尽可能保持其原有的基本语义,重载的运算符应该体现为原运算符的功能在新的数据类型上的延伸。

重载的运算符应尽可能保持其原有的特性,运算符的操作数个数、优先级和结合性是三个最基本的特性。

因此运算符重载时不需要保持的性质是操作数类型。

故本题答案为B。

16、当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为______。

A、ios_base:

:

in

B、ios_base:

:

in│ios_base:

:

out

C、ios_base:

:

out

D、ios_base:

:

in&ios_base:

:

out

本题主要考查了文件输入流。

当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为ios_base:

:

in。

故本题答案为A。

17、有如下类定义和变量定义:

classParents{

public:

intpublicData;

private:

intprivateData;

};

classChildA:

publicParents{/*类体略*/};

classChildB:

privateParents{/*类体略*/};

ChildAa;

ChildBb;

下列语句中正确的是______。

A、cout<

B、cout<

C、cout<

D、cout<

本题主要考查了派生类对基类成员的访问。

基类中公有成员在派生类中的访问控制属性将随着继承方式而改变:

派生类从基类公有继承时,基类的公有成员在派生类中仍然是公有成员;派生类从基类私有继承时,基类的公有成员在派生类中改变为私有成员。

通过类的对象只能访问类的公有成员,故选项A是正确的。

故本题答案为A。

18、有如下程序段:

inti=4;intj=1;

intmain(){

inti=8,j=i;

cout<

}

运行时的输出结果是______。

A、44

B、41

C、88

D、81

本题主要考查了变量的作用域与可见性。

在C++中,作用域可见性的规则之一是:

如果在两个或多个具有包含关系的作用域中声明了同名标识符,则外层标识符在内层不可见。

本题中,在main()函数之前声明的变量i和j具有文件作用域。

它的有效范围是整个源代码文件。

在main()函数中又声明了同名变量i和j并赋初值均为8,其作用域为函数块,有效范围为整个函数体。

因为具有块作用域的变量隐藏了具有文件作用域的同名变量,所以main()函数中第二条输出语句中的变量i和j指的是在main()函数中声明的变量i和j,故程序运行时的输出结果是88。

故本题答案为C。

19、已知类MyClass声明如下:

classMyClass{

intn;

public:

MyClass(intk):

n(k){}

intgetValue()const{returnn;}

};

在下列数组定义中正确的是______。

A、MyClassx1[2];

B、MyClassx2[2]={newMyClass

(1),newMyClass

(2)};

C、MyClass*x3[2];

D、MyClass*x4[2]={MyClass

(1),MyClass

(2)};

本题主要考查了对象数组、指针数组和new运算符。

new运算符返回指向指定类型的一个指针。

对象数组是指数组元素为对象的数组,该数组中的每一个元素都是同一个类的对象。

定义对象数组时,系统将自动调用构造函数创建每一个对象元素,因为类MyClass中定义了一个有一个整型参数的构造函数,编译器将不再为其生成缺省构造函数,所以定义对象数组时必须分别调用有参构造函数为每一个数组元素指定初始值。

因此选项A错误,没有初始化对象数组;选项B中,用指向对象的指针初始化对象数组,类型不匹配,因此选项B错误;指针数组是由指针组成的数组,即数组中的每一个元素都是指向同一类型对象的指针。

选项C定义了指向MyClass类对象的指针数组x3,该定义语句正确;选项D中,只能用指向MyClass类对象的指针或用已有的MyClass类对象的地址来初始化指针数组x4的每一个元素,不能用对象进行初始化,因此选项D错误。

故本题答案为C。

20、有如下程序:

#include

#include

usingnamespacestd;

classXCF{

inta;

public:

XCF(intaa=0):

a(aa){cout<<"1";}

XCF(XCF&x){a=x.a;cout<<"2";}

~XCF(){cout<

intGeta(){returna;}

};

intmain(){

XCFd1(5),d2(d1);

XCF*pd=newXCF(8);

cout<Geta();

deletepd;

return0;

}

运行时的输出结果是______。

A、1215588

B、1218855

C、12185

D、128512

本题主要考查了构造函数、拷贝构造函数和析构函数。

构造函数在对象被创建的时候由系统自动调用,析构函数在对象的生存期即将结束的时刻被系统自动调用,拷贝构造函数发生在用一个已知的对象初始化一个正在创建的同类对象的时候。

在main()函数中,语句XCFd1(5),d2(d1);先后创建了两个对象d1和d2。

在创建对象d1时,系统自动调用了构造函数,d1数据成员a的值为5,输出字符1;在创建对象d2时是用已创建的对象d1初始化,系统自动调用拷贝构造函数,对象d2数据成员a的值为5,输出字符2;然后执行语句XCF*pd=newXCF(8);系统再次调用构造函数通过new运算符动态创建了一个XCF类的对象,该对象的数据成员a的值为8,输出字符1,并将首地址赋给XCF类的指针pd。

成员函数Geta()的功能是获取数据成员a,因此执行语句cout<Geta();输出8。

接着执行语句deletepd;系统自动调用析构函数,输出指针pd所指向对象的数据成员a,即输出8,当main()函数结束时,系统先自动调用析构函数删除对象d2,输出对象d2的数据成员a的值5,然后再次调用析构函数删除对象d1,输出对象d1的数据成员a的值5。

因此程序输出结果为1218855。

故本题答案为B。

21、已知函数fun的原型为

intfun(int,int,int);

下列重载函数原型中错误的是______。

A、charfun(int,int);

B、doublefun(int,int,double);

C、intfun(int,clar*);

D、floatfun(int,int,int);

本题主要考查了函数重载。

函数重载允许用同一个函数名定义多个函数。

被重载的函数必须要有不同的形参列表(即参数个数不同或参数类型不同),不可以根据函数返回值类型来重载函数。

故本题答案为D。

22、下列关于函数模板的描述中,错误的是______。

A、从模板实参表和从模板函数实参表获得信息矛盾时,以模板实参的信息为准

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

C、虚拟类型参数没有出现在模板函数的形参表中时,不能省略模板实参

D、模板参数表不能为空

本题主要考查了函数模版。

在调用一个模板函数时,编译系统需要足够的信息来判别每个虚拟类型参数所对应的实际类型,可以从两个不同的渠道获得这样的信息:

从模板实参表(用<和>括起来的参数表)或从模板函数实参表(用(和)括起来的参数表),模板实参的信息优先于函数实参的信息,因此选项A正确。

如果从后者获得的信息已经能够判定其中部分或全部虚拟类型参数所对应的实际参数,而且它们又正好是参数表中最后的若干参数,则模板实参表中的那几个参数可以省略。

如果模板实参表中的实参都被省略了,则空表<>也可以不要,因此选项D错误。

反之,对于某个模板实参,如果从模板函数的实参表中无法获得同样的信息,就不能省略;或者虽然能够获得同样的信息,但在它后面还有其他不能省略的实参,则其自身还是不能省略。

下面列举几种模板实参不能省略的情况。

①从模板函数实参表获得的信息有矛盾。

②需要获得特定类型的返回值,而不管参数的类型如何。

③虚拟类型参数没有出现在模板函数的形参表中,因此选项C正确。

④函数模板含有常规形参,因此选项B正确。

故本题答案为D。

23、有如下程序:

#include

usingnamespacestd;

classPair{

intm;

intn;

public:

Pair(inti,intj):

m(i),n(j){}

booloperator>(Pairp)const;//须在类体外给出定义

};

intmain(){

Pairp1(3,4),p2(4,3),p3(4,5);

cout<<(p1>p2)<<(p2>p1)<<(p2>p3)<<(p3>p2);

return0;

}

运算符函数operator>的功能是比较两个Pair对象的大小,当左边对象大时,返回true,否则返回false。

比较规则是首先比较两对象的m成员,m大者为大;当m相等时比较n,n大者为大。

程序输出0101,下列对运算符重载函数的正确定义是______。

A、boolPair:

:

operator>(Pairp)const

{if(m!

=p.m)returnm>p.m;returnn>p.n;}

B、boolPair:

:

operator>(Pairp)

{if(m!

>p.m)returnm>p.m;returnn>p.n;}

C、boolPair:

:

operator>(Pairp)const

{if(m>p.m)returntrue;returnn>p.n;}

D、boolPair:

:

operator>(Pairp)

{if(m>p.m)returntrue;returnn>p.n;}

本题主要考查了常成员函数和运算符重载。

因为const关键字可以用于对重载函数的区分,所以在类外定义常成员函数时不能省略const关键字,因此选项B和选项D错误。

选项C中,如果mp.n返回值为true,但题目要求返回值应为false,因此选项C错误。

故本题答案为A。

24、有如下类定义:

classXX{

intxx;

public:

XX():

xx(0){cout<<'A';}

XX(intn):

xx(n){cout<<'B';}

};

classYY:

publicXX{

intyy;

public:

YY():

yy(0){cout<

YY(intn):

XX(n+1),yy(n){cout<

YY(intm,intn):

XX(m),yy(n){cout<

};

下列选项中,输出结果为A0的语句是______。

A、YYy1(0,0);

B、YYy2

(1);

C、YYy3(0);

D、YYy4;

本题主要考查了派生类构造函数执行顺序。

建立派生类对象时,构造函数的执行顺序为:

①执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺序(自左向右);②执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序(自上而下);③执行派生类的构造函数。

根据声明类YY的对象时提供的初始值个数和类型,确定和其匹配的构造函数,再根据该构造函数中在初始化基类时给出的初始值的个数和类型,确定和其匹配的基类的构造函数。

选项A中构造函数的执行顺序为:

先执行基类XX的有一个整型参数的构造函数,输出字符B,再执行派生类YY的有两个整型参数的构造函数,输出数据成员yy的值0,因此选项A的输出结果为B0;选项B中构造函数的执行顺序为:

先执行基类XX的有一个整型参数的构造函数,输出字符B,再执行派生类YY的有一个整型参数的构造函数,输出数据成员yy的值1,因此选项B的输出结果为B1;选项C的输出结果为B0;选项D中构造函数的执行顺序为:

先执行基类XX的缺省构造函数,输出字符A,再执行派生类YY的缺省构造函数,输出数据成员yy的值0,因此选项D的输出结果为A0。

故本题答案为D。

25、有下列程序:

#include

#include

usingnamespacestd;

classXCD{

char*a;

intb;

public:

XCD(char*aa,intbb){

a=newchar[strlen(aa)+1];

strcpy(a,aa);

b=bb;

}

char*Geta(){returna;}

intGetb(){returnb;}

};

intmain(){

char*p1="abcd",*p2="weirong";

intd1=6,d2=8;

XCDx(p1,d1),y(p2,d2);

cout<

return0;

}

运行时的输出结果是______。

A、12

B、16

C、14

D、11

本题主要考查了构造函数。

构造函数在对象被创建的时候由系统自动调用。

在mian()函数中,语句XCDx(p1,d1),y(p2,d2);创建了两个对象x和y,在创建对象x时系统自动调用类的构造函数,使对象x的数据成员字符指针a指向的内存空间的值为字符串"abcd";成员函数Geta的功能是获取数据成员a,库函数strlen()的功能是获取字符串的长度,故strlen(x.Geta())的值为4;在创建对象y时系统自动调用类的构造函数,使对象y的数据成员b的值为8,成员函数Getb的功能是获取数据成员b,故y.Getb()的值为8。

因此程序运行的输出结果是4+8,即12。

故本题答案为A。

26、下列描述中,不属于面向对象思想主要特征的是______。

A、封装性

B、跨平台性

C、继承性

D、多态性

本题主要考查了面向对象思想。

C++是一种面向对象的程序设计语言,它充分支持面向对象思想中的三个主要特征:

封装性、继承性、多态性。

故本题答案为B。

27、有如下程序:

#include

usingnamespacestd;

classAA{

intk;

protected:

intn;

voidsetK(intk){this->k=k;}

public:

voidsetN(intn){this->n=n;}

};

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

当前位置:首页 > 高等教育 > 军事

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

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