[计算机类试卷]国家二级(C++)笔试模拟试卷120及答案与解析.doc

上传人:outsidejudge265 文档编号:502574 上传时间:2018-11-29 格式:DOC 页数:23 大小:70.50KB
下载 相关 举报
[计算机类试卷]国家二级(C++)笔试模拟试卷120及答案与解析.doc_第1页
第1页 / 共23页
[计算机类试卷]国家二级(C++)笔试模拟试卷120及答案与解析.doc_第2页
第2页 / 共23页
[计算机类试卷]国家二级(C++)笔试模拟试卷120及答案与解析.doc_第3页
第3页 / 共23页
[计算机类试卷]国家二级(C++)笔试模拟试卷120及答案与解析.doc_第4页
第4页 / 共23页
[计算机类试卷]国家二级(C++)笔试模拟试卷120及答案与解析.doc_第5页
第5页 / 共23页
点击查看更多>>
资源描述

1、国家二级( C+)笔试模拟试卷 120及答案与解析 1 下列叙述中正确的是 ( A)所有形态的二叉树都只能采用链式存储结构 ( B)循环队列是队列的一种存储方式 ( C)栈只能采用顺序存储结构 ( D)循环队列与循环链表都属于链式存储结构 2 下列叙述中正确的是 ( A)软件测试的主要目的是确定程序中错误的位置 ( B)软件调试的主要目的是发现程序中错误的类型 ( C)程序经调试后还应进行测试 ( D)软件的测试与调试工,作最好都由程序编制者来完成 3 下列有关程序设计的原则中错误的是 ( A)对 所有的输入数据都要检查数据的合法性 ( B)输入一批数据时,最好使用数据结束标志 ( C)对于不

2、好的程序,尽量重新编写,避免修补 ( D)输出数据要干净,避免加注释 4 在深度为 6的满二叉树中,叶子结点的个数为 ( A) 64 ( B) 63 ( C) 32 ( D) 31 5 下列数据结构中按 “先进先出 ”原则组织数据的是 ( A)线性表 ( B)循环队列 ( C)循环链表 ( D)双向链表 6 将 7个数据进行插入排序,在最坏情况下需要比较的次数是 ( A) 42 ( B) 6 ( C) 7 ( D) 21 7 设有如图所示的二叉树 则对该二叉树前序遍历的结果是 ( A) FCADBEG ( B) ACBDFGE ( C) ABDCGEF ( D) ACBDFEG 8 下列关于软

3、件设计基本原理的叙述中错误的是 ( A)信息隐蔽是指在一个模块内的信息要使所有的模块都能访问得到 ( B)模块的独立程度是评价软件设计好坏的重要标准 ( C)耦合性用于衡量软件的模块独立性 ( D)内聚性用于衡量软件的模块独立性 9 数据库概念设计中,由分散到集中的设计方法是 ( A)视图设计 ( B)视图集成设计 ( C)集中式模式设 计 ( D)分数式模式设计 10 在下列关系运算中,可能改变关系中属性个数的是 ( A)并 ( B)差 ( C)投影 ( D)交 11 假定 a为一个整型数组名,则元素 a4的字节地址为 ( A) a+4 ( B) a+8 ( C) a+16 ( D) a+3

4、2 12 以下的 for循环 for(x 0, y=0, (y! =123)x+); ( A)是无限循环 ( B)循环次数不定 ( C)最多执行 4次 ( D)最多执行 3次 13 已知 int a, b;用语句 scanf(“%d%d“, ( A) 49.5 ( B) 9.5 ( C) 22 ( D) 45 17 设有以下类的定义: class Ex int x; public: void setx(int t=0); ; 若在类外定义成员函数 setx(),以下定义形式中正确的是 ( A) void setx(int t). ( B) void Ex: :setx(int t). ( C)

5、 Ex: :void setx(int t). ( D) void Ex: :setx(). 18 关于 const修饰符的说法中,错误的是 ( A) const既可以修饰成员函数,也可以修饰数据成员,还可以修饰对象 ( B)若 const修饰了一个对象,则该对象中的所有数据成员都无法被更新 ( C)常对象无法调用一般成员函数 ( D)常成员函数只能被常对象调用,不能被一般对象调用 19 以下不属于构造函数特征的是。 ( A)构造函数名 与类名相同 ( B)构造函数可以重载 ( C)构造函数可以设置默认参数 ( D)构造函数必须指定函数类型 20 以下叙述正确的是 ( A)派生类中不可以定义与

6、基类中同名的成员变量 ( B)派生类中不可以重载成员函数 ( C)派生类中不能调用基类中的同名函数 ( D)以上三项均不正确 21 如果一个类含有一个以上的纯虚函数,则称该类为 ( A)虚基类 ( B)抽象类 ( C)派生类 ( D)以上都不对 22 下列各类函数中,不是类的成员函数的是 ( A)构造函数 ( B)析构函数 ( C)友元函数 ( D)拷贝构造函数 23 在多继承中,公用派生和私有派生对于基类成员在派生类中的可访问性与单继承规则 ( A)完全相同 ( B)完全不同 ( C)部分相同,部分不同 ( D)以上都不对 24 已知类 A有公用数据成员 a,并重载了 =运算符,且有 A o

7、bj2; const A * ptr= new A;则下列语句错误的是 ( A) ptr- a=100; ( B) ptr ( C) ptr+; ( D) obj2=*ptr; 25 已知语句 int m 10;则下列引用的表示中正确的是 ( A) int ( B) int ( C) int ( D) float 26 以下有关类与结构体关系的叙述不正确的是 ( A)结构体中只包含数据;类中封装了数据和操作 ( B)结构体的成员对外界通常是开放的;类的成员可以被隐蔽 ( C)用 struct不能声明一个类型名;而 class可以声明一个类名 ( D)结构体成员默认为 Public;类成员默认为

8、 private 27 以下不能作为输出流对象的是 ( A)文件 ( B)内存 ( C)键盘 ( D)显示器 28 以下不能够读入空格字符的语句是 ( A) char line; line cin.get() ( B) char line; cin. get(line); ( C) char line; cin line; ( D) char line2; cin. getline(line,2); 29 设有定义 char str80;以下不能将输入数据 firstnsecondn CR读取到数组str中的语句是 ( A) cin.get(str, strlen(str); ( B) cin

9、.getline(str,strlen(str); ( C) cin str; ( D) cin.read(str, strlen(str); 30 当使用 fstram流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为 ( A) ios:in ( B) ios:out ( C) ios:int | ios:out ( D)没有 31 对于常数据成员,下面描述正确的是 ( A)常数据成员可以不初始化,并且不能更新 ( B)常数据成员必须被初始化,并且不能更新 ( C)常数据成员可以不初始化,并且可以被更新 ( D)常数据成员必须被初始化,并且可以被更新 32 下列能对对象进行初始化的

10、是 ( A)构造函数 ( B)析构函数 ( C)友元函数 ( D)静态成员函数 33 下述说法错误的是 ( A)对象之间不可以相互赋值 ( B)对象可以用作函数参数 ( C)对象可以用作数组的元素 ( D)对象可以用作另一对象的成员 34 设 A为 test类的对象且赋有初值,赋值符号已经重载,则语句 test B=A;表示 ( A)语法错 ( B)为对象 A定义一个别名 ( C)将对象 A复制给对象 B ( D)仅说明 B和 A属 于同一个类 35 重载函数在调用时选择的依据中,错误的是 ( A)函数的参数名称 ( B)参数的类型 ( C)函数的名字 ( D)函数的类型 36 设一棵二叉树的

11、中序遍历结果为 ABCDEFG,前序遍历结果为 DBACFEG,则后序遍历结果为【 】。 37 在面向对象方法中,属性与操作相似的一组对象称为【 】。 38 在结构化设计方法中,数据流图表达了问题中的数据流与加工之间的关系,并且,每一个【 】实际上对应一个处理模块。 39 在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动 模块和承接模块。其中【 】的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果。 40 在关系运算中,【 】运算是在指定的关系中选取所有满足给定条件的元组,构成一个新的关系,而这个新的关系是原关系的一个子集。 41 执行 “cout char(F-2

12、) end1; ”语句后得到的输出结果后【 】。 42 十进制 28和 3.26的类型分别是【 】。 43 假定一个二维数组的定义为 “int a35; ”,则该数组所含元素的个数为 15,所占的存储空间的字节数为【 】。 44 假定要动态分配一个类型为 Worker的具有 n个元素的数组,并由 r指向这个动态数组,则使用的语句是【 】。 45 将关键字 const写在函数头之后,函数体之前,说明该函数是一个 const成员函数。此时 const不是指定函数的返回值,而是修饰【 】指针。 46 若要在程序文件中进行标准输入输出操作,则必须在开始的 # include命令中使用头文件【 】。 4

13、7 下列程序的输出结果为【 】。 # include iostream, h void Func(char ch) switch (ch). case A: case a cout “优秀 “ end1; case B: case b: cout “良好 “ end1; break; case C: case c: cout “及格 “ end1 break; default cout “不及格 “ end1; void main() char ch1 =b Fune(chl); Func(A); 48 根据注释内容在空白处填写适当内容。 class Location private: int

14、 X,Y; public: void init(int init X,int init Y); int GetX( ); int GetY( ) ; void Location: init(int initX,int initY) X = initX Y=initY; int Location: :GetX( ) reutrn X int Location: :GetY( ) reutrn Y; # inelude iostream. h void main( ) Location A1; A1.init (20, 90) 【 】 /定义一个指向 A1的引用 rA1 cout rA1.GetX

15、() “: “ rA1.GetY() end1; 49 下列程序的招待结果是【 】。 # include iostream. h float temp; float float n= m; void disp() cout “normal: n=“ n end1; void disp()const cout “static: n=“ n end1; ; void main() const Sample a(12), Sample b(13), a. disp( ), b. disp() cout a, n “ b. con end1; 国家二级( C+)笔试模拟试卷 120答案与解析 1 【正

16、确答案】 B 【试题解析】 一般来说,二叉树采用链式存储结构,但由于完全二叉树的特点,采用顺序存储也能方便地访问其中的每一个元素。因此,选项 A)中的说法是不对的。 所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。在循环队列结构中,当存储空间的最后一个位置已被使用而再要进行人队运算时,只要存储空间的第一个位置空闲,便可将元素加人到第一个位置,即将存储空间的第一个位置作为队尾。因此,循环队列是队列的一种顺序存储方式,选项 B)中的说法是正确的。 栈是特殊的线性表,它既能采用顺序存储结构,又能采用链式存储结构。因此,选项 C)中的说法也是不对的。

17、 前面说过,循环队列是队列的一种顺序存储方式,不属于链式存储结构 因此,选项 D)中的说法也是不对的。 2 【正确答案】 C 【试题解析】 软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定。 测试不是为了证明程序是正确的,而是在设想程序有错误的前提下进行的,其目的是设法暴露程序中的错误和缺陷。 由于测试的这一特征,一般应当避免由开发者测试自己的程序。 测试只能说明程序有错,而不能证明程序无错,希望通过有限次的测试就能发现程序中的所有错误是不可能的,即完全测试是不可能的。 因此,选项 A)与 D)中的说法都是 错误的。 调试也称排错。 .测试的目的是暴露错误,

18、而调试的目的是发现错误的位置,并改正错误。 .经测试发现错误后,可以立即进行调试并改正错误;经过调试后的程序还需进行回归测试:以检查调试的效果,同时也可防止在调试过程中引进新的错误。 因此,选项 B)中的说法也是错误的,而选项 C)中的说法是正确的。 3 【正确答案】 D 【试题解析】 在程序设计中,优良的风格要求在输出中加入必要的注释因此,选项 D)中的说法是不对的。 4 【正确答案】 C 【试题解析】 二叉树有一个 性质;在二叉树的第 k层上,最多有 2k-1(k1)个结点。对于满二叉树来说,最后一层上的叶子结点数正好达到最大值。因此,深度为 6的满二叉树中,叶子结点的个数即是第 6层上结

19、点数的最大值,为 2k-1 26-1=32 5 【正确答案】 B 【试题解析】 队列是按 “先进先出 ”原则组织数据的,而循环队列只是队列的一种存储形式。因此,循环队列是按 “先进先出 ”原则组织数据的。 6 【正确答案】 D 【试题解析】 对长度为 n 的线性表进行插入排序,在最坏情况下需要 n(n-1)/2次比较,现线性表的 长度为 ?,在最坏情况下需要比较的次数为 7(7-1)/2=21。 7 【正确答案】 A 【试题解析】 按照二叉树前序遍历的方法:在访问根结点、遍历左子树与遍历右子树这三者中,首先访问根结点,然后遍历左于树,最后遍历右子树;并且,在遍历左、右子树时,仍然先访问根结点遍

20、历左于树,然后遍历左子树,最后遍历右子树对本题中的二叉树进行前序遍历的结果应是 FCADBEG。 8 【正确答案】 A 【试题解析】 所谓信息隐蔽是指,在一个模块内包含的信息 (过程或数据 ),对于不需要这些信息的其它模块来说是不能 访问的。因此,选项 A)中的说法是不对的。系统设计的质量主要反映在模块的独立性上。评价模块独立性的主要标准有两个:一是模块之间的耦合,它表明两个模块之间互相独立的程度;二是模块内部之间的关系是否紧密,称为内聚。因此,选项 B)、 C)、 D)中韵说法都是正确的。 9 【正确答案】 B 【试题解析】 数据库概念设计中,由分散到集中的设计方法是视图集成设计。 10 【

21、正确答案】 C 【试题解析】 投影运算是在给定关系的某些域上进行的运算。通过投影运算可以从一个关系中选择出所需要的属性成分,并且按要求 排列成一个新的关系,而新关系的各个属性值来自原关系中相应的属性值;因此,经过投影运算后,会取消某些列,即投影运算可能改变关系中属性韵个数。 11 【正确答案】 C 【试题解析】 注意: VC编译器分配给整数的内存是 4字节。 12 【正确答案】 C 【试题解析】 本题考察 for循环的三个表达式的用法及其执行顺序,本题中 for循环的第三个表达式完成变量自增,以控制 for循环的执行次数。 13 【正确答案】 A 【试题解析】 C+语言规定在使用 scanf输

22、入时可以用作数据分隔符的有空 格,回车和 Tab键。用户如果要从键盘输入空格字符,则需要使用其他的输入方式。 14 【正确答案】 D 【试题解析】 逻辑表达式的值输出结果是数字的形式。 C+规定,逻辑假用数字。表示,而逻辑真则用非零表示。注意:在 c+中,如果逻辑表达式的值是非零,则可以认为是真。 VC编译器在编译输出时将逻辑真输出为 1。 15 【正确答案】 A 【试题解析】 本题考察混合表达式的展开。 16 【正确答案】 B 【试题解析】 本题考察宏定义的使用,宏在使用是如同函数一样,但却是在编译时展开,而函 数却是在运行时进行计算的。 17 【正确答案】 B 【试题解析】 选项 A可以排

23、除,原因是类的成员函数的定义必须用域作用符:进行限定,选项 C的限定位置不对,函数的类型应在最前面。根据上下文可以指导, setx为单参成员函数,在定义时也必须指定参数,因此选项 D也可以排除,正确答案为 B。 18 【正确答案】 D 【试题解析】 本题考察 const修饰符的含义及其修饰不同对象的规则。常对象既能被常对象调用,也能被一般对象调用,一旦 const修饰了一个对象,则对象的所有数据成员都无法更新。 19 【正确答案】 D 【试题解析】 构造函数和析构函数一样,是类的特殊的成员函数。其特殊之处在于,构造函数可以有多个版本以实现不同的初始化方式,不能指定形参和函数类型,这些都是系统默

24、认完成。 20 【正确答案】 D 【试题解析】 派生类和基类之间的关系比较重要,派生类不仅可以定义同名的成员变量,还可以调用或重载基类的同名函数,这是类的多态性的基础。 21 【正确答案】 B 【试题解析】 纯虚函数一般提供派生类进行继承的参考,是多态性的重要保证,一个具有纯虚函数的类称为抽象类,抽象类可 以具有其他类的特点,但不能实例化,其主要目的是作为派生类的基类存在,处于类层次的高层。 22 【正确答案】 C 【试题解析】 构造函数包括默认构造函数和拷贝构造函数等,析构函数和构造函数一样属于类的特殊的成员函数而友元函数则是为了增加类的访问灵活行而允许其他类的成员函数或全局函数访问类的内部

25、变量或成员函数的一种机制,其缺点是破坏了类的封装性。 23 【正确答案】 A 【试题解析】 C+语言中为了简化继承关系,规定多重继承中可访问性规则同单继承规则。 24 【正确答案】 A 【试题解析】 本题考察 const修饰符的作用。注意; const位置不同,其修饰的部分也是不同的。本题中 const修饰的是 ptr所指的对象本身,所以, ptr是可以重新指向新的对象,而 ptr- a则无法被更新。 25 【正确答案】 A 【试题解析】 本题考察引用的定义既使用。引用是 C+中新引入的概念,其使用方法同变量,而其本质同指针,具有指针的灵活性。引用必须用变量进行赋值,不能用常量或常数。 26

26、【正确答案】 C 【试题解析】 可以说类来源于结构体,两者有相似之处。但类的功能更强大一些 ,不仅增加了操作,还能够隐藏和包含其成员变量或成员函数。 27 【正确答案】 C 【试题解析】 输出流对象包括基本的输出设备,如显示器,内存和文件,而输入流对象则包括键盘,文件以及其他输入设备。 28 【正确答案】 C 【试题解析】 本题考察 cin 流对象的几种成员函数 get, getline的使用规则。流提取符在提取字符时,遇到 C+规定的分隔符如空格,回车和 Tab 键时自动分割,故本题正确答案为 C。 29 【正确答案】 D 【试题解析】 本题考察 cin 流对象的几种成员函数 get, ge

27、tline, read 及流提取符的使用规则。 30 【正确答案】 D 【试题解析】 C+中没在规定文件打开时的隐含打开方式,因此考生在写程序是必须指定打开方式,否则将出现错误。 31 【正确答案】 B 【试题解析】 常数据成员不能背更新,因此可以排除选项 C和 D。常数据成员所包含的值不能被更新,所以必须被初始化,如果初始化则常数据成员里的随机值是没有实际意义的 32 【正确答案】 A 【试题解析】 类的构造函数的作用就是在类实例化对象时,即对象还没有生成时完成一些初 始化的工作。此时,析构函数和静态成员函数都还没有建立,而友元函数是类外部的函数根本无法完成类的实例化工作。 33 【正确答案

28、】 A 【试题解析】 如果重载了赋值运算符后,对象之间是可以赋值的,对象如 C+中其他内置的数据类型一样,可以作为函数参数、数组元素,其他对象的成员存在。 34 【正确答案】 C 【试题解析】 同上题。 35 【正确答案】 A 【试题解析】 是否是重载函数,需要给编译器提供足够的信息判断。其主要的依据是函数韵名字,参数的类型,函数的返回值类型。 36 【正确答案】 ACBEGFD 【试题解析】 由于在前序遍历中首先访问根结点,因此,前序序列中的第一个结点为二叉树的根结点,即 D为二叉树的根结点。又由于在中序遍历中访问根结点的次序为居中,而访问左于树上的结点为居先,访问右子树上的结点为最后,因此

29、,在中序序列中,以根结点 (D)为分界线,前面的子序列 (ABC)一定在左子树中,后面的子序列 (EFG)一定在右于树中。同样的道理,对于已经划分出的每一个子序列的所有结点中,位于前序序列最前面的一个结点为子树的根结点,而在中序序列中位于该根结点前面的结点构成左子树上的 结点子序列,位于该根结点后面的结点构成右子树上的结点子序列。这个处理过程直到所有子序列为空为止。根据上述道理,该二叉树恢复的过程如下图所示; 根据后序遍历的方法,对该二叉树后序遍历的结果为 ACBEGFD。 37 【正确答案】 类 【试题解析】 在面向对象方法中,类描述的是具有相似性质的一组对象。因此,属性与操作相似的一组对象

30、称为类。 38 【正确答案】 加工 【试题解析】 SD方法实际上是面向数据流图的,即它的工作对象实际上是在 SA方法中形成的数据流图。因此,可以由数据流图采导出结构图 。另外,由数据流图导出结构图的关键是找出中心加工,而每个加工则对应一个处理模块。 39 【正确答案】 驱动模块 【试题解析】 在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块。其中驱动模块的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果。 40 【正确答案】 选择 【试题解析】 在关系运算中选择运算是在指定的关系中选取所有满足给定条件的元组,构成一个新的关系,而这个新的关系是原关系的一

31、个子集。 41 【正确答案】 D 【试题解析】 char()在这里作为强制类型转换函数使用,将 F前相隔两个的字符显示出来,故应为字符 D。 42 【正确答案】 int和 double 【试题解析】 整型和双精度型。注意除非定义了 float变量,实型常量隐含为 double型。 43 【正确答案】 60 【试题解析】 二维数组总个数为维数之积,占用的存储空间的字节数与类型有关,本题为 int,则在 TC环境下被分配 2字节,而在 VC环境下被分配 4字节。 44 【正确答案】 Worker* r new Workern 【试题解析】 在 C+中动态分配栈上内存的命令是 new,释放命令是 d

32、elete,注意和 C语言中的 mallc 和 free向对应。 45 【正确答案】 this 【试题解析】 const在修饰指针的时候考生容易混淆。如果 const位于星号的左侧则 const就是用来修饰指针所指向的变量,即指针指向为常量;如果 const位于星号的右侧, const就是修饰指针本身,即指针本身是常量。而用 const声明了返回值后, const按照 “修饰原则 ”进行修饰,起到相应的保护作用,即保护 this 指针不被修改。 46 【正确答案】 iostream.h 【试题解析】 本头文件和重要,包含了基本输入输出所需要的库函数。 47 【正确答案】 良好 优秀 良好 【试

33、题解析】 本题主要考察 switch 语句中 break 语句的使用。由于 case A和 case B之间没有 break 语句,导致在输出 “优秀 ”之后顺序执行并输出了 “良好 ”,这与原来的设计思路是不符的。 48 【正确答案】 Location & rA1=A1; 【试题解析】 本题主要考察引用的定义。根据上下文以及注释可以获取所需要的类型及名称信息。 49 【正确答案】 20 【试题解析】 本题考察全局变量和引用的综合使用。在主函数中, b 实际上是temp 的一个引用。因此在给 b 赋值 20的时候,输出的 temp 就是 20。 50 【正确答案】 Sample(int m): con(m+1)n m; 【试题解析】 本题考察常数据成员的初始化方法。常数据成员的定义必须出现在类体中,而且初始化只能通过构造函数的成员初始化列表进行,而且不能被更新。

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

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1