最新全国计算机等级考试二级c++题库5共17套.docx
- 文档编号:10808187
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:31
- 大小:45.89KB
最新全国计算机等级考试二级c++题库5共17套.docx
《最新全国计算机等级考试二级c++题库5共17套.docx》由会员分享,可在线阅读,更多相关《最新全国计算机等级考试二级c++题库5共17套.docx(31页珍藏版)》请在冰豆网上搜索。
最新全国计算机等级考试二级c++题库5共17套
第五套
1、有三个关系R、S和T如下:
由关系R和S通过运算得到关系T,则所使用的运算为______。
A、笛卡尔积
B、交
C、并
D、自然连接
笛卡尔积:
设关系R和S的元数分别是r和s,定义R和S的笛卡尔积是一个(r+s)元元组的集合,每一个元组的前r个分量来自R的一个元组,后s个分量来自S的一个元组。
若R有k1个元组,s有k2个元组,则关系R和关系S的广义笛卡尔积有k1×k2个元组。
交:
设关系R和关系S具有相同的目n,且相应的属性取自同一个域,则关系R与关系S的交由属于R又属于S的所有元组组成。
并:
设关系R和关系S具有相同的目n(即两个关系都有n个属性),且相应的属性取自同一个域,则关系R与关系S的并由属于R或属于S的元组组成。
自然连接:
是一种特殊的等值连接,它要求两个关系中进行比较的分量必须有相同的属性组,并且要在结果中把重复的属性去掉。
故本题答案为D。
2、在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是______。
A、O(n)
B、
C、
D、
二分法检索要求线性表结点按关键值排序且以顺序方式存储。
在查找时,首先与表的中间位置上结点的关键值比较,若相等则检索成功;否则根据比较结果确定下一步在表的前半部分或后半部分继续进行。
二分法检索的效率比较高,设线性表有n个元素,则最多的检索次数为大于log2n(2为底数)的最小整数,最少的检索次数为1。
故本题答案为C。
3、在面向对象方法中,不属于"对象"基本特点的是______。
A、一致性
B、分类性
C、多态性
D、标识惟一性
面向对象方法中最基本的概念是对象,它的基本特点有:
标识惟一性、分类性、多态性、封装性和模块独立性好。
故本题答案为A。
4、在软件开发中,需求分析阶段可以使用的工具是______。
A、N-S图
B、DFD图
C、PAD图
D、程序流程图
软件开发阶段包括需求分析、总体设计、详细设计、编码和测试5个阶段。
其中需求分析阶段常用的工具是数据流图(简称DFD)和数据字典(简称DD)。
常见的详细设计的图形描述工具主要有程序流程图、N-S结构图、问题分析图(简称PAD图)。
故本题答案为B。
5、一个栈的初始状态为空。
现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是______。
A、12345ABCDE
B、EDCBA54321
C、ABCDE12345
D、54321EDCBA
栈是一种特殊的线性表,这种线性表只能在固定的一端进行插入和删除操作,允许插入和删除的一端称为栈顶,另一端称为栈底。
一个新元素只能从栈顶一端进入,删除时,只能删除栈顶的元素,即刚刚被插入的元素。
这表明栈的运算规则是"先进后出"(或称"后进先出")。
在栈顶进行插入运算,称为进栈(或入栈),在栈顶进行删除运算,称为退栈(或出栈)。
本题中,依次进栈,即依次插入元素1、2、3、4、5、A、B、C、D、E,依次出栈,即依次删除元素,根据栈"先进后出"的规则,应该以倒序出栈。
即元素出栈顺序为EDCBA54321。
故本题答案为B。
6、数据流图中带有箭头的线段表示的是______。
A、控制流
B、事件驱动
C、模块调用
D、数据流
数据流图是描述数据处理过程的工具,是需求理解的逻辑模型的图形表示,它直接支持系统的功能建模。
数据流图从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。
数据流图中的主要的图形元素与说明如下:
加工(转换):
输入数据经加工变换产生输出。
数据流:
沿箭头方向传送数据的通道,一般在旁边标注数据流名。
存储文件(数据源):
表示处理过程中存放各种数据的文件。
源,潭:
表示系统和环境的接口,属系统之外的实体。
故本题答案为D。
7、一间宿舍可住多个学生,则实体宿舍和学生之间的联系是______。
A、一对一
B、一对多
C、多对一
D、多对多
两个实体间的联系可以归纳为3种类型:
一对一联系:
一对一的联系表现为主表中的每一条记录只与相关表中的一条记录相关联。
一对多联系或多对一:
一对多的联系表现为主表中的每一条记录与相关表中的多条记录相关联。
多对多联系:
多对多的联系表现为一个表中的多个记录在相关表中同样有多个记录与其匹配。
一间宿舍可以住多个学生,但每个学生只能住一个宿舍,所以实体宿舍和学生之间的联系为一对多的联系。
故本题答案为B。
8、下列叙述中正确的是______。
A、循环队列中有队头和队尾两个指针,因此,循环队列是非线性结构
B、在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况
C、在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况
D、循环队列中元素的个数是由队头指针和队尾指针共同决定
所谓循环队列,就是将队列存储空间的最后一个位置绕到第1个位置,形成逻辑上的环状空间,供队列循环使用。
所以循环队列还是属于线性结构,所以选项A是错误的。
循环队列的头指针front指向队列的第一个元素的前一位置,队尾指针rear指向队列的最后一个元素,循环队列的动态变化需要头尾指针共同反映,所以选项B、C是错误的。
循环队列的长度是:
(sq.rear-sq.front+maxsize)%maxsize,所以循环队列的长度是由队头和队尾指针共同决定的,所以选项D正确。
故本题答案为D。
9、下列叙述中正确的是______。
A、顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的
B、顺序存储结构只针对线性结构,链式存储结构只针对非线性结构
C、顺序存储结构能存储有序表,链式存储结构不能存储有序表
D、链式存储结构比顺序存储结构节省存储空间
顺序存储结构就是用一组地址连续的存储单元依次存储该线性表中的各个元素,链式存储结构中各数据结点的存储序号是不连续的,并且各结点在存储空间中的位置关系与逻辑关系也不一致,所以选项A是正确的。
两者都可以存储线性的、有序的逻辑结构,所以选项B、C不正确。
顺序结构使用的是连续物理空间,链式结构可以使用零散的物理空间存储,链式结构更灵活,不存在谁节约空间的说法,所以选项D不正确。
故本题答案为A。
10、在数据管理技术发展的三个阶段中,数据共享最好的是______。
A、人工管理阶段
B、文件系统阶段
C、数据库系统阶段
D、三个阶段相同
数据库管理发展至今已经历了三个阶段:
人工管理阶段、文件系统阶段和数据库系统阶段。
人工管理阶段的特点:
数据不保存、数据不独立、数据不能共享、数据无结构,没有专门的数据管理软件。
文件系统阶段的特点:
数据可以长期保存,有专门的数据管理软件--文件系统。
但是数据独立性低,共享性差、冗余度大,数据记录内有结构,整体无结构。
数据库系统阶段的特点:
数据结构化,数据独立性高,数据共享性高,冗余度小,易于扩充,数据库管理系统提供统一的数控制功能,包括数据安全性、完整性、并发控制和数据恢复功能。
故本题答案为C。
11、下列选项中,与实现运行时多态性无关的是______。
A、重载函数
B、虚函数
C、指针
D、引用
本题主要考查了多态性。
在C++语言中,多态性可分为两类:
编译时的多态性和运行时的多态性。
编译时的多态性是通过函数重载和模板体现的;运行过程中的多态性需要满足三个条件,首先类之间满足类型兼容规则,第二要声明虚函数,第三是要由成员函数调用或者是通过指针、引用来访问虚函数。
因此重载函数与实现运行时多态性无关。
故本题答案为A。
12、下列模板声明中,有语法错误的是______。
A、template
B、template
C、template
D、template
本题主要考查了模板的定义。
函数模板的定义形式为:
template
类型名函数名(参数表){函数体的定义}
因此选项A、B和C是正确的。
类模板声明的语法形式为:
template<模板参数表>class类名{类成员声明};
在选项D中,模板参数表和class关键字之间有模板参数T不符合模板声明的语法,因此本题答案为D。
13、对于通过公有继承定义的派生类,若其成员函数可以直接访问基类的某个成员,说明该基类成员的访问权限是______。
A、公有或私有
B、私有
C、保护或私有
D、公有或保护
本题主要考查了派生类对基类成员的访问。
基类的成员有公有(public)、保护(protected)和私有(private)三种访问权限,类的继承方式也有公有继承(public)、保护继承(protected)和私有继承(private)三种。
无论哪种继承方式,派生类中的成员都不能访问基类中的私有成员,因此选项A、B和C不正确,但可以访问基类中的公有成员和保护成员。
故本题答案为D。
14、有如下程序:
#include
usingnamespacestd;
intmain(){
intsum;
for(inti=0;i<6;i+=3){
sum=i;
for(intj=i;j<6;j++)sum+=j;
}
cout< return0; } 运行时的输出结果是______。 A、3 B、10 C、12 D、15 本题主要考查了for循环的嵌套。 从本题代码可以看出程序运行结束时变量sum的值即是程序的运行结果,而外层for语句循环体的第一个语句是把变量i的值赋给变量sum,并且循环体里没有改变变量i值的语句,因此只要考虑最后一次for循环。 外层for语句共循环2次,最后一次循环时,i的值为3,执行语句sum=i;后变量sum的值为3,内层for语句共循环了3次: 变量j的值分别为3、4、5,每次循环,变量sum的值为sum+j,故sum的值为3+3+4+5=15。 故本题答案为D。 15、下列字符串中不能作为C++标识符使用的是______。 A、WHILE B、user C、_1var D、9stars 本题主要考查了C++语言中的标识符的定义。 标识符的组成要符合一定的规则: (1)标识符是一个以字母或下划线开头的,由字母、数字、下划线组成的字符串; (2)标识符不能与任意一个关键字同名; (3)标识符中的字母区分大小写; (4)标识符不宜过长。 在选项D中,9stars的第一个字符是数字,因此不是合法的标识符,不能作为C++标识符使用。 故本题答案为D。 16、下列语句中,正确的是______。 A、char*myString="Hello-World! "; B、charmyString="Hello-World! "; C、charmyString[11]="Hello-World! "; D、charmyString[12]="Hello-World! "; 本题主要考查了字符串和字符数组、字符型指针的关系。 由双引号括起来的字符串常量可以被看成一个无名字符数组,C++编译程序会自动为它分配一个空间来存放这个常量,字符串常量的值本身就是指向这个无名字符数组的第一个字符的指针,其类型是字符指针,因此可以用字符串常量初始化字符指针,故选项A正确; 用字符串对数组初始化时,编译程序以'\0'作为结束这个数组的标志。 因此,数组长度至少要比字符串长度(字符个数)多1。 字符串"Hello-World! "的长度为12,故数组长度至少为13,因此选项C和选项D不正确; 在选项B中,编译程序不能把赋值号右边的字符数组转换成左边的字符型,故选项B不正确。 故本题答案为A。 17、有如下程序: #include usingnamespacestd; classSample{ public: Sample(){} ~Sample(){cout<<'*';} }; intmain(){ Sampletemp[2],*pTemp[2]; return0; } 执行这个程序输出星号(*)的个数为______。 A、1 B、2 C、3 D、4 本题主要考查了构造函数、析构函数和指针。 构造函数在对象被创建的时候由系统自动调用,析构函数用来完成对象被删除前的一些清理工作,在对象的生存期即将结束的时刻被系统自动调用。 本题的main()函数中,第一条语句定义了一个含有2个元素的对象数组temp和一个含有2个元素的指针数组pTemp,声明指针,只是得到了用于存储地址的指针变量,不会创建对象,故此时只创建了两个对象。 当main()函数结束时,temp数组中的元素对象被删除时,系统自动调用析构函数2次输出两个'*'。 故本题答案为B。 18、要利用C++流进行文件操作,必须在程序中包含的头文件是______。 A、iostream B、fstream C、strstream D、iomanip 本题主要考查了C++流。 要利用C++流,必须在程序中包含有关的头文件,以便获得相关流类的声明。 为了使用新标准的流,相关头文件的文件名中不得有扩展名。 与C++流有关的头文件有: iostream: 要使用cin、cout的预定义流对象进行针对标准设备的I/O操作,须包含此文件。 fstream: 要使用文件流对象进行针对磁盘文件的I/O操作,须包含此文件。 strstream: 要使用字符串流对象进行针对内存字符串空间的I/O操作,须包含此文件。 iomanip: 要使用setw、fixed等大多数操作符,须包含此文件。 故本题答案为B。 19、如果表达式a>=b中的">="是作为非成员函数重载的运算符,则可以等效地表示为______。 A、a.operator>=(b) B、b.operator>=(a) C、operator>=(a,b) D、operator>=(b,a) 本题主要考查了运算符重载。 C++把重载的运算符视为特殊的函数,称为运算符函数,函数名就是在运算符前加上保留字operator。 一般而言,如果在类X中重载双目运算符@,a和b是类X的两个对象,则下列两种函数调用方法是等价的: 第一种是通过运算符构成表达式的形式进行调用,即a@b; 第二种是像一般函数那样用函数名进行调用: 当把@作为成员函数重载时,调用形式为a.operator@(b);当把@作为非成员函数重载时,调用形式为operator@(a,b)。 本题是把运算符>=重载为非成员函数,因此与表达式a>=b等效的表示为operator>=(a,b)。 故本题答案为C。 20、定义派生类时,若不使用关键字显式地规定采用何种继承方式,则默认方式为______。 A、私有继承 B、非私有继承 C、保护继承 D、公有继承 本题主要考查了派生类的定义。 定义派生类的一般格式如下: class<派生类名>: <继承方式1><基类名1>,…,<继承方式n><基类名n>{<派生类新定义成员>}; 其中,<继承方式>即派生类的访问控制方式,用于控制基类中声明的成员在多大的范围内能被派生类的用户访问。 每一个继承方式,只对紧随其后的基类进行限定。 继承方式包括3种: 公有继承(public)、私有继承(private)和保护继承(protected)。 如果不显式地给出继承方式,缺省的类继承方式是私有继承private。 故本题答案为A。 21、在语句"cout<<'A';"中,cout是______。 A、类名 B、对象名 C、函数名 D、C++的关键字 本题主要考查了预定义流对象。 C++流有4个预定义的流对象,它们的名称及与之联系的I/O设备如下: cin标准输入 cout标准输出 cerr标准出错信息输出 clog带缓冲的标准出错信息输出 故本题答案是B。 22、在C++中,编译系统自动为一个类生成缺省构造函数的条件是______。 A、该类没有定义任何有参构造函数 B、该类没有定义任何无参构造函数 C、该类没有定义任何构造函数 D、该类没有定义任何成员函数 本题主要考查了构造函数。 如果一个类中没有定义任何构造函数,编译器将生成一个不带参数的公有缺省构造函数。 但只要定义了构造函数,无论定义的构造函数是否带参数,都不会再生成缺省构造函数,因此选项C是正确的。 故本题答案为C。 23、下列语句中错误的是______。 A、constinta; B、constinta=10; C、constint*point=0; D、constint*point=newint(10); 本题主要考查了符号常量的声明。 符号常量声明的语法格式为: const<类型名><符号常量名>=<初值表达式>,……; 符号常量必须在声明的同时为其赋初值,因此选项A是错误的。 故本题答案为A。 24、建立一个有成员对象的派生类对象时,各构造函数体的执行次序为______。 A、派生类、成员对象类、基类 B、成员对象类、基类、派生类 C、基类、成员对象类、派生类 D、基类、派生类、成员对象类 本题主要考查了构造函数的调用。 当派生类中有多个成员对象时,各个成员对象构造函数的调用顺序也取决于在派生类中定义的顺序(自上而下),而与在派生类构造函数的成员初始化列表中给出的顺序无关。 建立派生类对象时,构造函数的执行顺序如下: (1)执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺序(自左向右); (2)执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序(自上而下);(3)执行派生类的构造函数。 故本题答案为C。 25、若已经声明了函数原型"voidfun(inta,doubleb=0.0);",则下列重载函数声明中正确的是______。 A、voidfun(inta=90,doubleb=0.0); B、intfun(inta,doubleB); C、voidfun(doublea,intB); D、boolfun(inta,doubleb=0.0); 本题主要考查了函数重载。 函数重载允许用同一个函数名定义多个函数。 被重载的函数必须要有不同的形参列表,不可以根据函数返回值类型来重载函数。 故本题答案为C。 26、当使用ofstream流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为______。 A、ios_base: : in B、ios_base: : binary C、ios_base: : in|ios_base: : out D、ios_base: : out 本题主要考查了输出文件流。 当使用ofstream流类定义一个流对象并打开一个磁盘文件时,通常要指定打开模式标志。 对于所有ofstream对象,标志ios_base: : out是隐含指定的打开方式,因此本题答案为D。 27、在一个抽象类中,一定包含有______。 A、虚函数 B、纯虚函数 C、模板函数 D、重载函数 本题主要考查了抽象类的定义。 拥有纯虚函数的类称为抽象类,抽象类不能用来定义对象。 故本题答案为B。 28、下列关于模板的叙述中,错误的是______。 A、调用模板函数时,在一定条件下可以省略模板实参 B、可以用int、double这样的类型修饰符来声明模板参数 C、模板声明中的关键字class都可以用关键字typename替代 D、模板的形参表中可以有多个参数 本题主要考查了模板。 在C++中,模板分为函数模板和类模板。 声明一个函数模板的格式是: template<模板形参表声明><函数声明> 其中的模板形参表声明是由一个或多个模板形参组成(如果是多个,需要用逗号隔开),因此选项D正确。 每个模板形参具有下面几种形式: (1)typename<参数名> (2)class<参数名> (3)类型修饰<参数名> 在这三种形式中,前两种是等价的: 在声明模板参数时,关键字typename与class可以互换。 用typename或class声明的参数称为虚拟类型参数;而用类型修饰声明的参数则称为常规参数,在形式上与普通的函数参数声明相同,因此选项B也正确。 在调用一个模板函数时,编译系统需要足够的信息来判别每个虚拟类型参数所对应的实际类型,可以从两个不同的渠道获得这样的信息: 从模板实参表(用<和>括起来的参数表)或从模板函数实参表(用(和)括起来的参数表),模板实参的信息优先于函数实参的信息。 如果从后者获得的信息已经能够判定其中部分或全部虚拟类型参数所对应的实际参数,而且它们又正好是参数表中最后的若干参数,则模板实参表中的那几个参数可以省略,因此选项A正确。 在类模板声明中,用于声明类的关键字class不能用关键字typename替代,故选项C不正确。 故本题答案为C。 29、下列关于运算符重载的叙述中,错误的是______。 A、有的运算符可以作为非成员函数重载 B、所有的运算符都可以通过重载而被赋予新的含义 C、不得为重载的运算符函数的参数设置默认值 D、有的运算符只能作为成员函数重载 本题主要考查了运算符重载。 在C++语言中,不是所有的运算符都可以被重载,C++语言规定,除了"."、".*"、"->*"、": : "、"? : "这五个运算符外,其它运算符都可以被重载,因此选项B不正确;由于很多符号是一元运算符和二元运算符共用的,为了避免含混,C++语言规定不得为重载的运算符函数设置默认值,调用时也就不得省略实参,因此选项C正确;在C++中,运算符的重载方式有两种: (1)重载为成员函数 (2)重载为友元函数,"="、"[]"、"()"、"->"以及所有的类型转换运算符只能重载为成员函数,有的运算符既可以重载为成员函数,也可以重载为友元函数,故选项A和D都正确。 故本题答案为B。 30、有如下程序: #include usingnamespacestd; classMyClass{ public: MyClass(intx): val(x){} voidSet(intx){val=x;} voidPrint()const{cout<<"val="< private: intval; }; intmain(){ constMyClassobj1(10); MyClassobj2(20); obj1.Print();//语句1 obj2.Print();//语句2 obj1.Set(20);//语句3 obj2.Set(30);//语句4 return0; } 其主函数中错误的语句是______。 A、语句1 B、语句2 C、语句3 D、语句4 本题主要考查了常对象。 使用const关键字修饰的对象称为常对象,它的定义格式如下: <类名>const<对象名>或const<类名
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 全国 计算机等级考试 二级 c+ 题库 17
![提示](https://static.bdocx.com/images/bang_tan.gif)