ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:34.30KB ,
资源ID:3699334      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3699334.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(最新全国计算机等级考试二级c++题库.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、最新全国计算机等级考试二级c+题库1、下列叙述中正确的是_。A、栈是先进先出的线性表B、队列是先进后出的线性表C、循环队列是非线性结构D、有序线性表既可以采用顺序存储结构,也可以采用链式存储结构 栈是一种特殊的线性表,这种线性表只能在固定的一端进行插入和删除操作,允许插入和删除的一端称为栈顶,另一端称为栈底。一个新元素只能从栈顶一端进入,删除时,只能删除栈顶的元素,即刚刚被插入的元素。所以栈又称后进先出表,所以选项A是错误的。 队列可看作是插入在一端进行,删除在另一端进行的线性表,允许插入的一端称为队尾,允许删除的一端称为队头。在队列中,只能删除队头元素,队列的最后一个元素一定是最新入队的元素

2、。因此队列又称先进先出表,所以选项B是错误的。 循环队列是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。它的逻辑结构仍然是线性结构,所以选项C是错误的。 有序线性表既可以采用顺序存储结构,也可以采用链式存储结构,所以选项D是正确的。故本题答案为D。2、将E-R图转换为关系模式时,实体和联系都可以表示为_。A、属性B、键C、关系D、域 将E-R图转换为关系模式时,实体和联系都可以表示成关系,E-R图中属性也可以转换成关系的属性。实体集也可以转换成关系。故本题答案为C。3、下面叙述中错误的是_。A、软件测试的目的是发现错误并改正错误B、对被调试的程序进行错误定位

3、是程序调试的必要步骤C、程序调试通常也称为DebugD、软件测试应严格执行测试计划,排除测试的随意性 1983年IEEE将软件测试定义为:使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。因此选项A的叙述是错误的。 软件测试的基本准则为:所有测试都应追溯到需求。严格执行测试计划,排除测试的随意性。充分注意测试中的群集现象。程序员应避免检查自己的程序。穷举测试不可能。妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。因此选项D正确。 在对程序进行了成功的测试之后将进入程序调试(通常称Debug,即排错)。因此选

4、项C正确。 程序调试的任务是诊断和改正程序中的错误。程序调试的基本步骤:错误定位。修改设计和代码,以排除错误。进行回归测试,防止引进新的错误。因此选项B是正确的。 故本题答案为A。4、下列排序方法中,最坏情况下比较次数最少的是_。A、冒泡排序B、简单选择排序C、直接插入排序D、堆排序 (1)冒泡排序法:是一种最简单的交换类排序法,它是通过相邻数据元素的交换逐步将线性表变成有序。假设线性表的长度为n,则在最坏情况下,冒泡排序需要经过n/2遍的从前往后的扫描和n/2遍的从后往前的扫描,需要比较的次数为n(n-1)/2次。 (2)简单插入排序法:在简单插入排序法中,每一次比较后最多移掉一个逆序,因此

5、,这种排序方法的效率与冒泡排序法相同。在最坏情况下,简单插入排序需要n(n-1)/2次比较。 (3)简单选择排序法:对于长度为n的序列,选择排序需要扫描n-1遍,每一遍扫描均从剩下的子表中选出最小的元素,然后将该最小的元素与子表中的第一个元素进行交换。简单选择排序法在最坏情况下需要比较n(n-1)/2次。 (4)堆排序法:堆排序的方法为:首先将一个无序序列建成堆。然后将堆顶元素(序列中的最大项)与堆中最后一个元素交换(最大项应该在序列的最后)。在最坏情况下,堆排序需要比较的次数为。 假设线性表的长度为16,那么冒泡排序、直接插入排序、简单选择排序都需要比较120次,而堆排序需要比较64次。 故

6、本题答案为D。5、耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是_。A、提高耦合性降低内聚性有利于提高模块的独立性B、降低耦合性提高内聚性有利于提高模块的独立性C、耦合性是指一个模块内部各个元素间彼此结合的紧密程度D、内聚性是指模块间互相连接的紧密程度 内聚性:内聚性是一个模块内部各个元素间彼此结合的紧密程度的度量。耦合性:耦合性是模块间互相连接的紧密程度的度量。因此选项C、D是错误的。在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。因此选项A是错误的,应该降低耦

7、性合提高内聚性,所以选项B是正确的。 故本题答案为B。6、有两个关系R,S如下: R S 由关系R通过运算得到关系S,则所使用的运算为_。A、选择B、投影C、插入D、连接 专门的关系运算包括:选择、投影和连接。1、选择:从关系中找出满足给定条件的元组的操作称为选择。选择是从行的角度进行的运算,即从水平方向抽取记录。2、投影:从关系模式中指定若干个属性组成新的关系。投影是从列的角度进行的运算,相当于对关系进行垂直分解。3、连接:连接是关系的横向结合。连接运算将两个关系模式拼接成一个更宽的关系模式,生成的新关系中包含满足连接条件的元组。连接过程是通过连接条件来控制的,连接条件中将出现两个表中的公共

8、属性名,或者具有相同语义、可比的属性。选择和投影运算的操作对象只是一个表。相当于对一个二维表进行切割。连接运算需要两个表作为操作对象。 由图可知关系R通过运算得到关系S,关系S与关系R相比,记录的条数没有发生变化,属性的个数发生了变化。因此所使用的运算应该是投影。选项C插入运算会增加记录的条数。所以选项B是正确的。故本题答案为B。7、数据库应用系统中的核心问题是_。A、数据库设计B、数据库系统设计C、数据库维护D、数据库管理员培训 数据库应用系统是数据库系统再加上应用软件及应用界面这三者所组成,具体包括:数据库、数据库管理系统、数据库管理员、硬件平台、软件平台、应用软件、应用界面。在数据库应用

9、系统中的一个核心问题就是设计一个能满足用户要求,性能良好的数据库,这就是数据库设计。所以选项A是正确的。故本题答案为A。8、支持子程序调用的数据结构是_。A、栈B、树C、队列D、二叉树 子程序调用是一种层次关系,子程序调用功能模块,调用功能模块的个数也不确定,可以是一个,也可以是多个。选项A、C中元素之间是一种前后件关系,前后元素之间没有层次之分,每个结点有一个前件也只有一个后件。二叉树是一种很有用的非线性结构,二叉树不同于树形结构。二叉树具有以下两个特点:非空二叉树只有一个根结点;每一个结点最多有两棵子树,且分别称为该结点的左子树与右子树。选项D规定每个结点只能有两个后件。在子程序调用中,调

10、用的功能模块可以是多个,可以调用超过两个功能模块。所以选项A、C、D均不正确。故本题答案为B。9、某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是_。A、10B、8C、6D、4 在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。本题中度为2的结点数为5,故叶子结点数为5+1=6个。故本题答案为C。10、软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是_。A、编译程序B、操作系统C、教务管理系统D、汇编程序 软件按功能可以分为:应用软件、系统软件、支撑软件(或工具软件)。应用软件是为解决特定领域的应用而开发的软件。例如,事务处理软件

11、、工程与科学计算软件,实时处理软件,嵌入式软件,人工智能软件等应用性质不同的软件。因此选项C教务管理系统属于应用软件。系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。如操作系统,编译程序,汇编程序,网络软件,数据库管理系统等。因此选项A、B、D都属于系统软件。故本题答案为C。11、有如下程序:#includeusing namespace std;class ONE int c;public: ONE():c(0)cout1; ONE(int n):c(n)cout2;class TWO ONE one1; ONE one2;public: TWO(int m

12、):one2(m)cout3;int main() TWO t(4); return 0;运行时的输出结果是_。A、3B、23C、123D、213 本题主要考查了成员对象。 当一个类的成员是另外一个类的对象时,该对象就称为成员对象。建立一个类的对象时,要调用它的构造函数。如果这个类有成员对象,要首先执行所有的成员对象的构造函数,当全部成员对象的初始化都完成之后,再执行当前类的构造函数体。当类中有多个成员对象时,要按照定义成员对象的顺序建立各个子对象,即成员对象构造函数的执行顺序仅与成员对象在类中声明的顺序有关,而与成员初始化列表中给出的成员对象的顺序无关。如果在构造函数的成员初始化列表中没有给

13、出对成员对象的初始化,则表示使用成员对象的缺省构造函数。如果所有的成员对象都是调用缺省构造函数建立的,那么该类的构造函数的成员初始化列表可以省略。类TWO的数据成员是类ONE的对象one1和one2,main()函数中首先创建类TWO的对象t并提供初始值4,先执行成员对象one1的构造函数体,输出1;再执行成员对象one2的构造函数体,输出2,最后执行类TWO的构造函数体,输出3。因此本题程序运行时的输出结果是123。 故本题答案为C。12、假设下列语句都是程序运行后首次执行的输出语句,其中输出结果与另外三条语句不同的语句是_。A、coutsetfill(*)123setw(9)321;B、c

14、outsetfill(*)setw(6)left123setw(6)right321;C、cout123setfill(*)setw(6)321;D、coutsetfill(*)setw(9)left123321; 本题主要考查了输出格式控制。 操纵符setw为紧随其后的输出项指定输出宽度,在一个域输出完后,域宽度恢复成它的默认值0,输出项默认对齐方式为右对齐,操纵符setfill的作用是设置填充字符。因此选项A、选项B和选项D的输出结果都为123*321,而选项C的输出结果为123*321。 故本题答案为C。13、已知表达式+a中的+是作为成员函数重载的运算符,则与+a等效的运算符函数调用形

15、式为_。A、a.operator+(1)B、operator+(a)C、operator+(a,1)D、a.operator+() 本题主要考查了运算符重载。 C+把重载的运算符视为特殊的函数,称为运算符函数,函数名就是在运算符前加上保留字operator。一般而言,如果a是类X的对象,在类X中重载前置单目运算符,则下列两种函数调用方法是等价的: 第一种是通过运算符构成表达式的形式进行调用, 即a; 第二种是像一般函数那样用函数名进行调用:当把作为成员函数重载时,调用形式为a.operator ();当把作为非成员函数重载时,调用形式为operator (a)。本题是把前置单目运算符+重载为成

16、员函数,因此与表达式+a等效的表示为a.operator +()。 故本题答案为D。14、已知有数组定义char a34;下列表达式中错误的是_。A、a2=WINB、strcpy(a2,WIN)C、a23=WD、a01=a01 本题主要考查了数组。 如果把二维数组a34看作3行4列矩阵,a2是第三行数据的首地址,是一个常量,不能对其赋值。本题答案为A。15、运算符重载时不需要保持的性质是_。A、操作数个数B、操作数类型C、优先级D、结合性 本题主要考查了运算符重载。 重载的运算符应尽可能保持其原有的基本语义,重载的运算符应该体现为原运算符的功能在新的数据类型上的延伸。重载的运算符应尽可能保持其

17、原有的特性,运算符的操作数个数、优先级和结合性是三个最基本的特性。因此运算符重载时不需要保持的性质是操作数类型。故本题答案为B。16、当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为_。A、ios_base:inB、ios_base:inios_base:outC、ios_base:outD、ios_base:in & ios_base:out 本题主要考查了文件输入流。 当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为ios_base:in。故本题答案为A。17、有如下类定义和变量定义:class Parents publi

18、c: int publicData; private: int privateData;class ChildA:public Parents/*类体略*/;class ChildB:private Parents/*类体略*/;ChildA a;ChildB b;下列语句中正确的是 _。A、couta.publicDataendl;B、couta.privateDataendl; C、coutb.publicDataendl;D、coutb.privateDataendl; 本题主要考查了派生类对基类成员的访问。 基类中公有成员在派生类中的访问控制属性将随着继承方式而改变:派生类从基类公有继

19、承时,基类的公有成员在派生类中仍然是公有成员;派生类从基类私有继承时,基类的公有成员在派生类中改变为私有成员。通过类的对象只能访问类的公有成员,故选项A是正确的。故本题答案为A。18、有如下程序段:int i=4;int j=1;int main() int i=8,j=i;coutijendl;运行时的输出结果是_。A、44B、41C、88D、81 本题主要考查了变量的作用域与可见性。 在C+中,作用域可见性的规则之一是:如果在两个或多个具有包含关系的作用域中声明了同名标识符,则外层标识符在内层不可见。本题中,在main()函数之前声明的变量i和j具有文件作用域。它的有效范围是整个源代码文件

20、。在main()函数中又声明了同名变量i和j并赋初值均为8,其作用域为函数块,有效范围为整个函数体。因为具有块作用域的变量隐藏了具有文件作用域的同名变量,所以main()函数中第二条输出语句中的变量i和j指的是在main()函数中声明的变量i和j,故程序运行时的输出结果是88。故本题答案为C。19、已知类MyClass声明如下:class MyClass int n;public: MyClass(int k):n(k) int getValue()constreturn n;在下列数组定义中正确的是_。A、MyClass x12;B、MyClass x22=new MyClass(1),ne

21、w MyClass(2);C、MyClass *x32;D、MyClass *x42=MyClass(1),MyClass(2); 本题主要考查了对象数组、指针数组和new运算符。 new运算符返回指向指定类型的一个指针。对象数组是指数组元素为对象的数组,该数组中的每一个元素都是同一个类的对象。定义对象数组时,系统将自动调用构造函数创建每一个对象元素,因为类MyClass中定义了一个有一个整型参数的构造函数,编译器将不再为其生成缺省构造函数,所以定义对象数组时必须分别调用有参构造函数为每一个数组元素指定初始值。因此选项A错误,没有初始化对象数组;选项B中,用指向对象的指针初始化对象数组,类型不

22、匹配,因此选项B错误;指针数组是由指针组成的数组,即数组中的每一个元素都是指向同一类型对象的指针。选项C定义了指向MyClass类对象的指针数组x3,该定义语句正确;选项D中,只能用指向MyClass类对象的指针或用已有的MyClass类对象的地址来初始化指针数组x4的每一个元素,不能用对象进行初始化,因此选项D错误。故本题答案为C。20、有如下程序:#include#includeusing namespace std;class XCF int a;public: XCF(int aa=0): a(aa)cout1; XCF(XCF& x)a=x.a; cout2; XCF()couta;

23、 int Geta()return a;int main() XCF d1(5),d2(d1); XCF *pd=new XCF(8); coutGeta(); delete pd; return 0;运行时的输出结果是_。A、1215588B、1218855C、12185D、128512 本题主要考查了构造函数、拷贝构造函数和析构函数。 构造函数在对象被创建的时候由系统自动调用,析构函数在对象的生存期即将结束的时刻被系统自动调用,拷贝构造函数发生在用一个已知的对象初始化一个正在创建的同类对象的时候。在main()函数中,语句XCF d1(5),d2(d1);先后创建了两个对象d1和d2。在创

24、建对象d1时,系统自动调用了构造函数,d1数据成员a的值为5,输出字符1;在创建对象d2时是用已创建的对象d1初始化,系统自动调用拷贝构造函数,对象d2数据成员a的值为5,输出字符2;然后执行语句XCF *pd=new XCF(8);系统再次调用构造函数通过new运算符动态创建了一个XCF类的对象,该对象的数据成员a的值为8,输出字符1,并将首地址赋给XCF类的指针pd。成员函数Geta()的功能是获取数据成员a,因此执行语句coutGeta();输出8。接着执行语句delete pd;系统自动调用析构函数,输出指针pd所指向对象的数据成员a,即输出8,当main()函数结束时,系统先自动调用

25、析构函数删除对象d2,输出对象d2的数据成员a的值5,然后再次调用析构函数删除对象d1,输出对象d1的数据成员a的值5。因此程序输出结果为1218855。 故本题答案为B。21、已知函数fun的原型为int fun (int,int,int);下列重载函数原型中错误的是_。A、char fun(int,int);B、double fun(int,int,double);C、int fun(int,clar*); D、float fun(int,int,int); 本题主要考查了函数重载。 函数重载允许用同一个函数名定义多个函数。被重载的函数必须要有不同的形参列表(即参数个数不同或参数类型不同)

26、,不可以根据函数返回值类型来重载函数。故本题答案为D。22、下列关于函数模板的描述中,错误的是_。A、从模板实参表和从模板函数实参表获得信息矛盾时,以模板实参的信息为准B、对于常规参数所对应的模板实参,任何情况下都不能省略C、虚拟类型参数没有出现在模板函数的形参表中时,不能省略模板实参D、模板参数表不能为空 本题主要考查了函数模版。 在调用一个模板函数时,编译系统需要足够的信息来判别每个虚拟类型参数所对应的实际类型,可以从两个不同的渠道获得这样的信息:从模板实参表(用括起来的参数表)或从模板函数实参表(用(和)括起来的参数表),模板实参的信息优先于函数实参的信息,因此选项A正确。如果从后者获得

27、的信息已经能够判定其中部分或全部虚拟类型参数所对应的实际参数,而且它们又正好是参数表中最后的若干参数,则模板实参表中的那几个参数可以省略。如果模板实参表中的实参都被省略了,则空表也可以不要,因此选项D错误。反之,对于某个模板实参,如果从模板函数的实参表中无法获得同样的信息,就不能省略;或者虽然能够获得同样的信息,但在它后面还有其他不能省略的实参,则其自身还是不能省略。下面列举几种模板实参不能省略的情况。从模板函数实参表获得的信息有矛盾。需要获得特定类型的返回值,而不管参数的类型如何。虚拟类型参数没有出现在模板函数的形参表中,因此选项C正确。函数模板含有常规形参,因此选项B正确。 故本题答案为D

28、。23、有如下程序:#includeusing namespace std;class Pair int m; int n;public: Pair(int i,int j):m(i),n(j) bool operator (Pair p)const; /须在类体外给出定义;int main() Pair p1(3,4),p2(4,3),p3(4,5); coutp2)p1)p3)p2); return 0;运算符函数operator的功能是比较两个Pair对象的大小,当左边对象大时,返回true,否则返回false。比较规则是首先比较两对象的m成员,m大者为大;当m相等时比较n,n大者为大。

29、程序输出0101,下列对运算符重载函数的正确定义是_。A、bool Pair:operator (Pair p)const if (m!=p.m) return mp.m; return np.n;B、bool Pair:operator (Pair p) if(m!p.m) return mp.m;return np.n;C、bool Pair:operator (Pair p)const if(mp.m) return true;return np.n;D、bool Pair:operator (Pair p) if(mp.m) return true;return np.n; 本题主要考查了常成员函数和运算符重载。 因为const关键字可以用于对重载函数的区分,所以在类外定义常成员函数时不能省略const关键字,因此选项B和选项D错误。选项C中,如果mp.n返回值为true,但题目要求返回值应为false,因此选项C错误。 故本题答案为A。24、有如下类定义:class XX int xx;public: XX():xx(0)coutA; XX(int n):xx(n)coutB;class YY:public XX int yy;public

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

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