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

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

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

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

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

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

第七套

1、数据库管理系统是______。

A、操作系统的一部分

B、在操作系统支持下的系统软件

C、一种编译系统

D、一种操作系统

数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等。

故本题答案为B。

2、对于循环队列,下列叙述中正确的是______。

A、队头指针是固定不变的

B、队头指针一定大于队尾指针

C、队头指针一定小于队尾指针

D、队头指针可以大于队尾指针,也可以小于队尾指针

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

在循环队列中,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置。

循环队列主要有两种基本运算:

入队运算与退队运算。

每进行一次入队运算,队尾指针就进一。

每进行一次退队运算,排头指针就进一。

当rear或front的值等于队列的长度+1时,就将rear或front的值置为1。

一般情况下,rear大于front,因为入队的元素肯定比出队的元素多。

特殊的情况是rear到达数组的上限之后又从数组的低端开始,此时,rear是小于front的。

故本题答案为D。

3、算法的空间复杂度是指______。

A、算法在执行过程中所需要的计算机存储空间

B、算法所处理的数据量

C、算法程序中的语句或指令条数

D、算法在执行过程中所需要的临时工作单元数

一个算法的空间复杂度,一般是指执行这个算法所需要的内存空间。

故本题答案为A。

4、下列数据结构中,能够按照"先进后出"原则存取数据的是______。

A、循环队列

B、栈

C、队列

D、二叉树

在栈中,允许插入与删除的一端称为栈顶,而不允许插入与删除的另一端称为栈底。

栈顶元素总是最后被插入的元素,从而也是最先能被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。

即栈是按照"先进后出"或"后进先出"的原则组织数据的。

故本题答案为B。

5、在E-R图中,用来表示实体联系的图形是______。

A、椭圆形

B、矩形

C、菱形

D、三角形

在E-R图中用矩形表示实体集,用椭圆形表示属性,用菱形表示联系。

故本题答案为C。

6、有三个关系R,S和T如下:

其中关系T由关系R和S通过某种操作得到,该操作为______。

A、选择

B、投影

C、交

D、并

并:

设关系R和关系S具有相同的目n(即两个关系都有n个属性),且相应的属性取自同一个域,则关系R与关系S的并由属于R或属于S的元组组成。

本题中,关系T是关系R和关系S进行并运算得到的。

故本题答案为D。

7、软件设计中划分模块的一个准则是______。

A、低内聚低耦合

B、高内聚低耦合

C、低内聚高耦合

D、高内聚高耦合

耦合性与内聚性是模块独立性的两个定性标准。

在程序结构中,各模块的内聚性越强,则耦合性越弱。

一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。

故本题答案为B。

8、下列数据结构中,属于非线性结构的是______。

A、循环队列

B、带链队列

C、二叉树

D、带链栈

如果一个非空的数据结构满足下列两个条件:

(1)有且只有一个根结点;

(2)每一个结点最多有一个前件,也最多有一个后件。

则称该数据结构为线性结构。

本题中循环队列、带链队列和带链栈都是线性结构,二叉树是非线性结构。

故本题答案为C。

9、下列选项中不属于结构化程序设计原则的是______。

A、可封装

B、自顶向下

C、模块化

D、逐步求精

结构化程序设计方法的主要原则可以概括为自顶向下,逐步求精,模块化,限制使用goto语句。

故本题答案为A。

10、软件详细设计产生的图如下:

该图是______。

A、N-S图

B、PAD图

C、程序流程图

D、E-R图

程序流程图是一种传统的、应用广泛的软件过程设计表示工具,通常也称为程序框图,箭头表示控制流,矩形表示加工步骤,菱形表示逻辑条件。

故本题答案为C。

11、有如下程序:

#include

#include

usingnamespacestd;

intmain(){

ints[]={123,234};

cout<

for(inti=0;i<2;i++){cout<

return0;

}

运行时的输出结果是______。

A、123

234

B、***123

234

C、***123

***234

D、***123

234***

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

right设置在设定的宽度内右对齐输出(默认对齐方式),用填充字符填充左边。

setfill('*')设置填充字符为*。

setw(6)指定输出宽度为6,在一个数据输出完后,宽度自动恢复为默认值0(表示按数据实际宽度输入输出)。

因此第一行输出结果为***123,第2行输出结果为234。

故本题答案为B。

12、有如下程序:

#include

usingnamespacestd;

classC1{

public:

~C1(){cout<<1;}

};

classC2:

publicC1{

public:

~C2(){cout<<2;}

};

intmain(){

C2cb2;

C1*cb1;

return0;

}

运行时的输出结果是______。

A、121

B、21

C、211

D、12

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

析构函数用来完成对象被删除前的一些清理工作,在对象的生存期即将结束的时候由系统自动调用。

删除派生类对象时,析构函数的执行顺序如下:

(1)执行派生类的析构函数;

(2)执行派生类成员对象所在类的析构函数;(3)执行基类析构函数。

在main()函数中,第一条语句定义了派生类C2的对象cb2,第二条语句声明对象指针cb1,声明指针,只是得到了用于存储地址的指针变量,不会创建对象,故本程序只创建了一个对象cb2。

当main()函数结束时,派生类对象cb2被删除前,系统先执行派生类C2的析构函数,输出2,然后调用基类C1的析构函数,输出1。

故本程序运行时的输出结果是21。

故本题答案为B。

13、在下列枚举符号中,用来表示"相对于当前位置"文件定位方式的是______。

A、ios_base:

:

cur

B、ios_base:

:

beg

C、ios_base:

:

out

D、ios_base:

:

end

本题主要考查了文件流的定位。

C++流的定位方式(也就是指针移动方式)有三种:

ios_base:

:

beg:

相对于文件首。

ios_base:

:

cur:

相对于当前位置(负数表示当前位置之前)。

ios_base:

:

end:

相对于文件尾。

故本题答案为A。

14、Sample是一个类,执行下面语句后,调用Sample类的构造函数的次数是______。

Samplea[2],*p=newSample;

A、0

B、1

C、2

D、3

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

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

本题定义了一个含有2个元素的对象数组a和一个指向动态创建对象的指针p,因此共创建了3个对象。

故Sample类的构造函数被调用3次。

故本题答案为D。

15、已知函数FA调用FB,若要把这两个函数定义在同一个文件中,则______。

A、FA必须定义在FB之前

B、FB必须定义在FA之前

C、若FA定义在FB之后,则FA的原型必须出现在FB的定义之前

D、若FB定义在FA之后,则FB的原型必须出现在FA的定义之前

本题主要考查了函数原型。

在C++中,函数在使用之前要预先声明原型。

因此如果函数FB定义在函数FA之后,则必须在函数FA之前声明函数FB的原型,才可以在函数FA中调用函数FB。

故本题答案为D。

16、有如下程序段:

inti=1;

while

(1){

i++;

if(i==10)break;

if(i%2==0)cout<<'*';

}

执行这个程序段输出字符*的个数是______。

A、10

B、3

C、4

D、5

本题主要考查了while循环和if语句。

在while循环中,变量i的值从1开始,按步长值1递增,当i的值等于10时退出while循环,当i的值为2的整数倍且i的值不等于10时,输出字符*,故执行这个程序段输出字符*的个数为4。

故本题答案为C。

17、有如下模板声明:

templateclassA;

下列声明中,与上述声明不等价的是______。

A、templateclassA;

B、templateclassA;

C、templateclassA;

D、templateclassA;

本题主要考查了类模板的声明。

在C++中,类模板声明的语法形式为:

template<模板参数表声明>class类名;

每个模板形参具有下面几种形式:

(1)typename<参数名>

(2)class<参数名>

(3)类型修饰<参数名>

在这三种形式中,前两种是等价的:

在声明模板参数时,关键字typename与class可以互换。

因此选项A、B、C和该题模板声明等价。

故本题答案为D。

18、有如下程序:

#include

usingnamespacestd;

classA{

public:

A(inti):

r1(i){}

voidprint(){cout<<'E'<

voidprint()const{cout<<'C'<

private:

intr1;

};

intmain(){

Aa1

(2);constAa2(4);

a1.print();a2.print();

return0;

}

运行时的输出结果是______。

A、运行时出错

B、E2-C16-

C、C4-C16-

D、E2-E4-

本题主要考查了常对象和常成员函数。

使用const关键字修饰的对象称为常对象,使用const关键字说明的成员函数称为常成员函数,const关键字可以用于对重载函数的区分。

本题在A类中说明了两个同名函数print,其中一个是常函数。

在主函数main中说明了两个对象a1和a2,其中a2是常对象。

如果将一个对象说明为常对象,则通过该常对象只能调用它的常成员函数,不能调用其他成员函数,因此通过对象a1调用的是没有用const修饰的函数print,输出E2-,而通过对象a2调用的是用const修饰的常函数print,输出C16-。

故本题程序运行时的输出结果是E2-C16-。

故题答案为B。

19、下列关于虚基类的描述中,错误的是______。

A、使用虚基类可以消除由多继承产生的二义性

B、构造派生类对象时,虚基类的构造函数只被调用一次

C、声明"classB:

virtualpublicA"说明类B为虚基类

D、建立派生类对象时,首先调用虚基类的构造函数

本题主要考查了虚基类。

当一个派生类从多个基类派生,而这些基类又有一个共同的基类,当对该基类中说明的成员进行访问时,可能出现二义性。

虚基类就是为了解决这种二义性问题提出来的,因此选项A正确。

使用虚基类解决二义性问题的关键是在派生类中只产生一个虚基类子对象,因此,在建立派生类的一个对象时,为保证虚基类子对象只被初始化一次,这个虚基类构造函数必须只被调用一次,因此选项B正确。

虚基类的说明格式如下:

class<类名>:

virtual<继承方式><基类名>

选项C中声明"classB:

virtualpublicA"说明类A为虚基类,因此选项C错误。

建立派生类对象时,根据派生类构造函数的执行顺序,应首先调用基类构造函数,因此选项D正确。

故本题答案为C。

20、下列关于运算符重载的描述中,错误的是______。

A、:

:

运算符不能重载

B、类型转换运算只能作为成员函数重载

C、将运算符作为非成员函数重载时必须定义为友元

D、重载[]运算符应完成"下标访问"操作

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

C++语言规定,除了.、.*、->*、:

:

、?

:

这五个运算符外,其他运算符都可以重载,因此选项A是正确;在C++中,运算符函数重载一般有两种形式:

重载为类的成员函数和重载为类的非成员函数。

非成员函数通常是友元。

(可以把一个运算符作为一个非成员、非友元函数重载。

但是,这样的运算符函数访问类的私有和保护成员时,必须使用类的公有接口中提供的设置数据和读取数据的函数,调用这些函数时会降低性能。

),因此选项C错误;=、[]、()、->以及所有的类型转换运算符只能重载为成员函数,因此选项B正确;重载的[]应完成"下标访问"操作,使得向指定下标处的元素赋值或取值成为可能,因此选项D正确。

故本题答案为C。

21、计算斐波那契数列第n项的函数定义如下:

intfib(intn){

if(n==0)return1;

elseif(n==1)return2;

elsereturnfib(n-1)+fib(n-2);

}

若执行函数调用表达式fib

(2),函数fib被调用的次数是______。

A、1

B、2

C、3

D、4

本题主要考查了递归函数。

如果一个函数在其函数体内直接或间接地调用了自己,该函数就称为递归函数。

若执行函数调用表达式fib

(2),则执行表达式fib(2-1)+fib(2-2),即执行表达式fib

(1)+fib(0),故函数fib共被调用了3次:

fib

(2)、fib

(1)和fib(0)。

故本题答案为C。

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

A、模板形参表必须在关键字template之后

B、模板形参表必须用括弧()括起来

C、可以用class修饰模板形参

D、可以用typename修饰模板形参

本题主要考查了模板。

在C++中,模板分为函数模板和类模板。

声明一个函数模板的格式是:

template<模板形参表声明><函数声明>

声明一个类模板的格式是:

template<模板形参表声明><类声明>

所有模版的定义都以关键字template开始,模板形参表必须在关键字template之后,因此选项A正确;<模板形参表声明>必须用一对尖括号<>括起来,因此选项B错误。

每个<模板形参>具有下面几种形式:

(1)typename<参数名>

(2)class<参数名>

(3)类型修饰<参数名>

在这三种形式中,前两种是等价的:

在声明模板参数时,关键字typename与class可以互换,因此选项C、D正确。

故本题答案B。

23、已知数组arr的定义如下:

intarr[5]={1,2,3,4,5};

下列语句中输出结果不是2的是______。

A、cout<<*arr+1<

B、cout<<*(arr+1)<

C、cout<

D、cout<<*arr<

本题主要考查了数组和指针。

在C++中,数组的名字就是指向该数组第一个元素(下标为0)的指针,即该数组第一个元素的地址,也即数组的首地址。

因此表达式*arr等价于arr[0],故选项D的输出结果为1;选项A中,表达式*arr+1等价于表达式a[0]+1,输出结果为2。

一般情况下,一个数组元素的下标访问a[i]等价于相应的指针访问*(a+i),因此选项B和选项C均输出元素arr[1]的值,即2。

故本题答案为D。

24、下列关于C++流的描述中,错误的是______。

A、cout>>'A'表达式可输出字符A

B、eof()函数可以检测是否到达文件尾

C、对磁盘文件进行流操作时,必须包含头文件fstream

D、以ios_base:

:

out模式打开的文件不存在时,将自动建立一个新文件

本题主要考查了C++流。

cout是C++流预定义的标准输出流对象。

插入运算符<<是所有标准C++数据类型预先设计的,用于传送字节到一个输出流对象。

>>是提取运算符,用于从一个输入流对象获取字节。

故选项A的描述错误。

故本题答案是A。

25、下列关于运算符函数的描述中,错误的是______。

A、运算符函数的名称总是以operator为前缀

B、运算符函数的参数可以是对象

C、运算符函数只能定义为类的成员函数

D、在表达式中使用重载的运算符相当于调用运算符重载函数

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

运算符函数的函数名是由运算符前加关键字operator构成的,因此选项A正确;运算符的重载形式有两种,重载为类的成员函数和重载为类的友元函数,因此选项C错误;在表达式中使用重载的运算符相当于调用运算符重载函数,因此选项D正确;运算符函数的参数可以是对象,因此选项B正确。

故本题答案为C。

26、有如下程序:

#include

usingnamespacestd;

classAA{

public:

AA(){cout<<'1';}

};

classBB:

publicAA{

intk;

public:

BB():

k(0){cout<<'2';}

BB(intn):

k(n){cout<<'3';}

};

intmain(){

BBb(4),c;

return0;

}

运行时的输出结果是______。

A、1312

B、132

C、32

D、1412

本题主要考查了类的继承与派生。

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

(1)执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺序(自左向右);

(2)执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序(自上而下);(3)执行派生类的构造函数。

在main()函数中,第一条语句定义了两个派生类BB的对象:

b和c,并初始化对象b。

创建对象b时构造函数的执行顺序:

执行基类AA的构造函数,输出1,然后执行派生类BB的带参数的构造函数,输出3;创建对象c时构造函数的执行顺序为:

执行基类AA的构造函数,输出1,然后执行派生类BB的不带参数的构造函数,输出2。

故程序运行时的输出结果是1312。

故本题答案为A。

27、有如下程序:

#include

usingnamespacestd;

className{

charname[20];

public:

Name(){

strcpy(name,"");cout<<'?

';

}

Name(char*fname){

strcpy(name,fname);cout<<'?

';

}

};

intmain(){

Namenames[3]={Name("张三"),Name("李四")};

return0;

}

运行此程序输出符号?

的个数是______。

A、0

B、1

C、2

D、3

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

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

本题的构造函数有两种重载形式:

有参数的和无参数的,无参数的构造函数也称为默认形式的构造函数。

main()函数中,第一条语句定义了一个含有3个元素的Name类对象数组names,即创建了三个Name类对象,建立前两个对象时,给出初始值,因此调用有参数的构造函数,输出2个?

,建立第三个对象时调用无参数的构造函数,输出1个?

,因此运行此程序输出符号?

的个数是3。

故本题答案为D。

28、下列字符串中可以用作C++标识符的是______。

A、2009var

B、goto

C、test-2009

D、_123

本题主要考查了标识符。

标识符的组成要符合一定的规则:

①标识符是一个以字母或下划线开头的,由字母、数字、下划线组成的字符串;

②标识符不能与任意一个关键字同名;

③标识符中的字母区分大小写;

④标识符不宜过长。

选项A的第一个字符是数字,选项B是关键字,选项C中的字符-不合法。

只有选项D可以用作C++标识符。

故本题答案为D。

29、下列枚举类型的定义中,包含枚举值3的是______。

A、enumtest{RED,YELLOW,BLUE,BLACK};

B、enumtest{RED,YELLOW=4,BLUE,BLACK};

C、enumtest{RED=-1,YELLOW,BLUE,BLACK};

D、enumtest{RED,YELLOW=6,BLUE,BLACK};

本题主要考查了枚举常量。

枚举常量是枚举类型中定义的值,即枚举值。

枚举类型实际上是int类型的一个子集,其每一个枚举值代表一个整数;n个枚举值全部未赋常量值时,它们自左至右分别与整数0,1…n-1对应;若第i个枚举值赋常量值为m,则其未赋常量值的后续枚举值分别与整数m+1,m+2…对应,直到下一个赋了值的枚举值或结束。

因此只有选项A包含枚举值3。

故本题答案为A。

30、有如下类定义:

classXX{

intxdata;

public:

XX(intn=0):

xdata(n){}

};

classYY:

publicXX{

intydata;

public:

YY(intm=0,intn=0):

XX(m),ydata(n){}

};

YY类的对象包含的数据成员的个数是______。

A、1

B、2

C、3

D、4

本题主要考查了类的继承与派生。

派生类继承了基类的全部数据成员和除了构造、析构函数之外的全部成员函数。

在一个派生类中,其成员由两部分构成:

一部分是从基类继承得到的,另一部分是自己定义的新成员。

因此派生类YY的数据成员有两个:

一个是从基类XX继承得到的xdata,另一个是自己定义的新数据成员ydata。

故本题答案为B。

31、有如下程序:

#include

usingnamespacestd;

classPublication{//出版物类

charname[30];

public:

Publication(char*name="未知名称"){

strcpy(this->name,name);

}

constchar*getName()const{returnname;}

virtualconstchar*getType()const{return"未知类型";}

};

classBook:

publicPublication{//书类

p

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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