1、国家二级( C+)笔试模拟试卷 145及答案与解析 1 下列叙述中正确的是 ( A)所有形态的二叉树都只能采用链式存储结构 ( B)循环队列是队列的一种存储方式 ( C)栈只能采用顺序存储结构 ( D)循环队列与循环链表都属于链式存储结构 2 下列叙述中正确的是 ( A)软件测试的主要目的是确定程序中错误的位置 ( B)软件调试的主要目的是发现程序中错误的类型 ( C)程序经调试后还应进行测试 ( D)软件的测试与调试工作最好都由程序编制者来完成 3 面向对象的开发方法中,类与对象的关系是 ( A)具体与抽象 ( B)抽象与具体 ( C)整体与部分 ( D)部分与整体 4 在深度为 6的满二叉
2、树中,叶子结点的个数为 ( 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 下列关于软件设计基本原理的叙述中错误的是 ( A)信息隐蔽是指在一个模块内的信息要使所有的模块都能访问得
3、到 ( 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+32 12 以下的 for循环 for(x=0,y=0;(y!=123)x+); ( A)是无限循
4、环 ( B)循环次数不定 ( C)最多执行 4次 ( D)最多执行 3次 13 已知 int a,b; 用语句 scanf(“%d%d“, 输入 a, b的值时,不能作为输入数据分隔符的是 ( A) , ( B)空格 ( C)回车 ( D) Tab键 14 语句 cout (a=2) ( B) n=n+1,k=n; ( C) k=+n; ( D) k+=n+1; 16 执行 cout setw(5) 123 setfill(*) 16;的输出为 ( A) *12316 ( B) 123*16 ( C) 12316 ( D) 12316* 17 设有以下类的定义: class Ex int x;
5、 public: void setx(int t=0); ; 若在类外定义成员函数 setx( ),以下定义形式中正确的是 ( A) void setx(int t) ( B) void Ex:setx(int t) ( C) Ex:void setx(int t) ( D) void Ex:setx( ) 18 关于 const修饰符的说法中,错误的是 ( A) const既可以修饰成员函数,也可以修饰数据成员,还可以修饰对象 ( B)若 const修饰了一个对象,则该对象中的所有数据成员都无法被更新 ( C)常对象无法调用一般成员函数 ( D)常成员函数只能被常对象调用,不能被一般对象调用
6、 19 以下不属于构造函数特征的是 ( A)构造函数名与类名相同 ( B)构造函数可以重载 ( C)构造函数可以设置默认参数 ( D)构造函数必须指定函数类型 20 以下叙述正确的是 ( A)派生类中不可以定义与基类中同名的成员变量 ( B)派生类中不可以重载成员函数 ( C)派生类中不能调用基类中的同名函数 ( D)以上三项均不正确 21 如果一个类含有一个以上的纯虚函数,则称该类为 ( A)虚基类 ( B)抽象类 ( C)派生类 ( D)以上都不对 22 下列各类函数中,不是类的成员函数的是 ( A)构造函数 ( B)析构函数 ( C)友元函数 ( D)拷贝构造函数 23 在多继承中,公用
7、派生和私有派生对于基类成员在派生类中的可访问性与单继承规则 ( A)完全相同 ( B)完全不同 ( C)部分相同,部分不同 ( D)以上都不对 24 已知类 A有公用数据成员 a,并重载了 =运算符,且有 A obj2;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)结构体中只包含数据;类
8、中封装了数据和操作 ( B)结构体的成员对外界通 常是开放的;类的成员可以被隐蔽 ( C)用 struct不能声明一个类型名;而 class可以声明一个类名 ( D)结构体成员默认为 public;类成员默认为 private 27 以下不能作为输出流对象的是 ( A)文件 ( B)内存 ( C)键盘 ( D)显示器 28 下列数组的定义中,会产生错误的是 ( A) int a=0,1,2,3,4,5,6); ( B) int a10=0,1,2,3,4,5,6; ( C) char a5=“hello“; ( D) char a5=h,e,r,l,o; 29 设有定义 char str80;
9、以下不能将输入数据 firstnsecondn读取到数组 str中的语句是 ( A) ein.get(str,strlen(str); ( B) cin.getline(str,strlen(str); ( C) cin str; ( D) cin.read(str,strlen(str); 30 当使用 fstrearn流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为 ( A) ios:in ( B) ios:out ( C) ios:int|ios:out ( D)没有 31 对于常数据成员,下面描述正确的是 ( A)常数据成员可以不初始化,并且不能更新 ( B)常数据成员必须
10、被初始化,并且不能更新 ( C)常数据成员可以不初始化,并且可以被更新 ( D)常数据成员必须被初始化,并且可以被更新 32 下列能对对象进行初始化的是 ( A)构造函数 ( B)析构函数 ( C)友元函数 ( D)静态成员函数 33 下述说法错误的是 ( A)对象之间不可以相互赋值 ( B)对象 可以用作函数参数 ( C)对象可以用作数组的元素 ( D)对象可以用作另一对象的成员 34 设 A为 test类的对象且赋有初值,赋值符号已经重载,则语句 test B=A;表示 ( A)语法错 ( B)为对象 A定义一个别名 ( C)将对象 A复制给对象 B ( D)仅说明 B和 A属于同一个类
11、35 重载函数在调用时选择的依据中,错误的是 ( A)函数的参数名称 ( B)参数的类型 ( C)函数的名字 ( D)函数的类型 36 数据结构分为逻辑结构与存储结构,循环队列属于 _。 37 在最坏情况 下,冒泡排序所需要的比较次数为 _。 38 设一棵完全二叉树共有 839个结点,则在该二叉树中有 _个叶子结点。 39 数据模型分为格式化模型与非格式化模型,层次模型与网状模型属于 _。 40 在关系模型中,把数据看成一个二维表,每一个二维表称为一个 _。 41 执行 “cout char(F-2) endl;“语句后得到的输出结果后 _。 42 十进制 28和 3.26的类型分别是 _。
12、43 已知 int DBL (int n)return n+n;和 long DBL (long n)return n+n是一个函数模板的两个实例,则该函数模板的定义是 _。 44 假定要动态分配一个类型为 worker的具有 n个元素的数组,并由 r指向这个动态数组,则使用的语句是 _。 45 将关键字 const写在函数头之后,函数体之前,说明该函数是一个 const成员函数。此时 const不是指定函数的返回值,而是修饰 _指针。 46 若要在程序文件中进行标准输入输出操作,则必须在开始的 # include命令中使用头 文件 _。 47 下列程序的输出结果为 _。 #include i
13、ostream.h void Func(char ch) switch(ch) case A:case a: cout “优秀 “ endl; case B:case b: cout “良好 “ endl; break; case C:case c: cout “及格 “ endl; break; default: cout “不及格 “ endl; void main( ) char ch1=b Func(ch1); Func(A); 48 根据注释内容在空白处填写适当内容。 class Location private: int X,Y; public: void init(int ini
14、tX,int initY); 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; #include iostream.h void main( ) Location A1; A1.init(20,90); _ /定义一个指向 A1的引用 rA1 cout rAl.GetX( ) “:“ rAl.GetY( ) endl; 49 下列程序的执行结果是 _。
15、 #include iostream.h float temp; float return temp; void main( ) float a=fn2(5.0); float b=20; cout temp endl; 50 下列类的构造函数不能通过编译,正确的构造函数应该是 _。 #include iostream.h class Sample public: int n; const int con; Sample(int m) con=m+1;n=m; void disp( ) cout “normal:n=“ n endl; void disp( )const cout “stati
16、c:n=“ n endl; ; void main( ) const Sample a (12); Sample b (13); a.disp( ); b.isp( ); cout a.n “,“ b.con endl; 国家二级( C+)笔试模拟试卷 145答案与解析 1 【正确答案】 B 【试题解析】 一般来说,二叉树采用链式存储结构,但由于完全二叉树的特点,采用顺序存储也能方便地访问其中的每一个元素。因此,选项 A中的说法是不对的。所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。在循环队列结构中,当存储空间的最后一个位置已被使用而再要进
17、行人队运算时,只要存储空间的第一个位置空闲,便可将元素加入到第一个位置,即将存储空间的第一个位置作为队尾。因此,循环队列是队列的一种顺序存储方式,选项 B中的说法是正确的。栈是特殊的线性表,它既能采用顺序存 储结构,又能采用链式存储结构。因此,选项 C中的说法也是不对的。前面说过,循环队列是队列的一种顺序存储方式,不属于链式存储结构。因此,选项 D中的说法也是不对的。 2 【正确答案】 C 【试题解析】 软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定。测试不是为了证明程序是正确的,而是在设想程序有错误的前提下进行的,其目的是设法暴露程序中的错误和缺陷。由于
18、测试的这一特征,一般应当避免由开发者测试自己的程序。测试只能说明程序有错,而不能证明程序无错,希望通过有限次的测试 就能发现程序中的所有错误是不可能的,即完全测试是不可能的。因此,选项 A与 D中的说法都是错误的。调试也称排错。 测试的目的是暴露错误,而调试的目的是发现错误的位置,并改正错误。 经测试发现错误后,可以立即进行调试并改正错误;经过调试后的程序还需进行回归测试,以检查调试的效果,同时也可防止在调试过程中引进新的错误。因此,选项 B中的说法也是错误的,而选项 C中的说法是正确的。 3 【正确答案】 B 【试题解析】 现实世界中的很多事件都具有相似的性质,把几个有相似的属性的操作的对象
19、归为类,也就是说类是具有共 同属性、共同方法的对象的集合,是对对象的抽象,它描述了该对象类型的所有对象的性质,而一个对象则是其对应类的一个具体实例。所以本题正确答案为 B。 4 【正确答案】 C 【试题解析】 二叉树有一个性质:在二叉树的第 k层上,最多有 2k-1(k1)个结点。对于满二叉树来说,最后一层上的叶子结点数正好达到最大值。因此,深度为 6的满二叉树中,叶子结点的个数即是第 6层上结点数的最大值,为 2k-1=26-1=32 5 【正确答案】 B 【试题解析】 队列是按 “先进先出 ”原则组织数据的,而循环队列只是队列的 一种存储形式。因此,循环队列是按 “先进先出 ”原则组织数据
20、的。 6 【正确答案】 D 【试题解析】 对长度为 n的线性表进行插入排序,在最坏情况下需要 n(n-1)/2次比较,现线性表的长度为 7,在最坏情况下需要比较的次数为 7(7-1)/2=21。 7 【正确答案】 A 【试题解析】 按照二叉树前序遍历的方法:在访问根结点、遍历左子树与遍历右子树这三者中,首先访问根结点,然后遍历左子树,最后遍历右子树;并且,在遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。对本题中的二叉树 进行前序遍历的结果应是 FCADBEG。 8 【正确答案】 A 【试题解析】 所谓信息隐蔽是指,在一个模块内包含的信息 (过程或数据 ),对于不需要这些信
21、息的其它模块来说是不能访问的。因此,选项 A中的说法是不对的。系统设计的质量主要反映在模块的独立性上。评价模块独立性的主要标准有两个:一是模块之间的耦合,它表明两个模块之间互相独立的程度;二是模块内部之间的关系是否紧密,称为内聚。因此,选项 B、 C、 D中的说法都是正确的。 9 【正确答案】 B 【试题解析】 数据库概念设计中,由分散到集中的设计方 法是视图集成设计。 10 【正确答案】 C 【试题解析】 投影运算是在给定关系的某些域上进行的运算。通过投影运算可以从一个关系中选择出所需要的属性成分,并且按要求排列成一个新的关系,而新关系的各个属性值来自原关系中相应的属性值。因此,经过投影运算
22、后,会取消某些列,即投影运算可能改变关系中属性的个数。 11 【正确答案】 C 【试题解析】 注意: VC编译器分配给整数的内存是 4字节。 12 【正确答案】 C 【试题解析】 本题考察 for循环的三个表达式的用法及其执行顺序,本题中 for循环的第三个表达式完成变量自增,以控制 for循环的执行次数。 13 【正确答案】 A 【试题解析】 C+语言规定在使用 scanf输入时可以用作数据分隔符的有空格,回车和 Tab键。用户如果要从键盘输入空格字符,则需要使用其他的输入方式。 14 【正确答案】 D 【试题解析】 逻辑表达式的值输出结果是数字的形式。 C+规定,逻辑假用数字0表示,而逻辑
23、真则用非零表示。注意:在 C+中,如果逻辑表达式的值是非零,则可以认为是真。 VC编译器在编译输出时将逻辑真输出为 1。 15 【正确答案】 A 【试题解析】 本题考察混合表达式的展开。 16 【正确答案】 A 【试题解析】 setw( )为一次有效的设置, setfill则一直有效,直到再次设置为止。正确答案为 A。 17 【正确答案】 B 【试题解析】 选项 A可以排除,原因是类的成员函数的定义必须用域作用符 :进行限定;选项 C的限定位置不对,函数的类型应在最前面。根据上下文可以指导, setx为单参成员函数,在定义时也必须指定参数,因此选项 D也可以排除,正确答案为 B。 18 【正确
24、答案】 D 【试题解析】 本题 考察 const修饰符的含义及其修饰不同对象的规则。常成员函数既能被常对象调用,也能被一般对象调用,一旦 const修饰了一个对象,则对象的所有数据成员都无法更新。 19 【正确答案】 D 【试题解析】 构造函数和析构函数一样,是类的特殊的成员函数。其特点之一是不指定返回类型,故 D项错误。 20 【正确答案】 D 【试题解析】 派生类和基类之间的关系比较重要,派生类不仅可以定义同名的成员变量,还可以调用或重载基类的同名函数,这是类的多态性的基础。 21 【正确答案】 B 【试题解析 】 纯虚函数一般提供派生类进行继承的参考,是多态性的重要保证,一个具有纯虚函数
25、的类称为抽象类,抽象类可以具有其他类的特点,但它不能定义对象,不能声明为内联函数。 22 【正确答案】 C 【试题解析】 构造函数包括默认构造函数和拷贝构造函数等,析构函数和构造函数一样属于类的特殊的成员函数。而友元函数则是为了增加类的访问灵活行而允许其他类的成员函数或全局函数访问类的内部变量或成员函数的一种机制,其缺点是破坏了类的封装性。 23 【正确答案】 A 【试题解析】 C+语言中为了简化继承关系,规 定多重继承中可访问性规则同单继承规则。 24 【正确答案】 A 【试题解析】 本题考察 const修饰符的作用。注意: const位置不同,其修饰的部分也是不同的。本题中 const修饰
26、的是 ptr所指的对象本身,所以, ptr是可以重新指向新的对象,而 ptr- a则无法被更新。 25 【正确答案】 A 【试题解析】 本题考察引用的定义既使用。引用是 C+中新引入的概念,其使用方法同变量,而其本质同指针,具有指针的灵活性。引用必须用变量进行赋值,不能用常量或常数。 26 【正确答案】 C 【试题解析】 可以说类来源于结构体,两者有相似之处。结构也可以声明类型名,但类的功能更强大一些,不仅增加了操作,还能够隐藏和包含其成员变量或成员函数。 27 【正确答案】 C 【试题解析】 输出流对象包括基本的输出设备,如显示器,内存和文件,而输入流对象则包括键盘,文件以及其他输入设备。
27、28 【正确答案】 C 【试题解析】 本题考核数组的定义和初始化。下面逐项进行分析: A选项中,数组 a的定义和初始化符号数组的定义和初始化语法,故正确; B选项中,数组 a初始化的值虽然没有 10个,但对于少 的部分,系统会自动补 0,所以 B选项中数组的定义也是正确; C选项中,数组 a的长度为 5,但字符串 “hello“的长度为5+1=6,字符串结束符 0无法存储在数组中,所以是错误的; D选项中,数组 a的定义是正确的。 29 【正确答案】 D 【试题解析】 本题考察 cin流对象的几种成员函数 get, getline, read及流提取符的使用规则。 30 【正确答案】 D 【试
28、题解析】 C+中没有规定文件打开时的隐含打开方式,因此考生在写程序是必须指定打开方式,否则将出现错误。 31 【正 确答案】 B 【试题解析】 常数据成员不能被更新,因此可以排除选项 C和 D。常数据成员所包含的值不能被更新,所以必须被初始化。 32 【正确答案】 A 【试题解析】 类的构造函数的作用就是初始化对象。此时,析构函数和静态成员函数都还没有建立,而友元函数是类外部的函数,根本无法完成类的实例化工作。 33 【正确答案】 A 【试题解析】 如果重载了赋值运算符后,对象之间是可以赋值的,对象和 C+中其他内置的数据类型一样,可以作为函数参数、数组元素,其他对象的成员存在。 34 【正确
29、答 案】 C 35 【正确答案】 A 【试题解析】 是否是重载函数,需要给编译器提供足够的信息判断。其主要的依据是函数的名字,参数的类型,函数的返回值类型。 36 【正确答案】 存储结构 【试题解析】 数据结构分为逻辑结构与存储结构,循环队列属于存储结构。因此,本题的正确答案为存储结构。 37 【正确答案】 n(n-1)/2 【试题解析】 在最坏情况下,冒泡排序所需要的比较次数为 n(n-1)/2。 38 【正确答案】 420 【试题解析】 一般二叉树有一个性质;在任意一棵 二叉树中,度为 0的结点 (即叶子结点 )总是比度为 2的结点多一个。 在根据完全二叉树的定义,在一棵完全二叉树中,最多
30、有 1个度为 1的结点。 综合以上两点可以得到如下结论: 设一棵完全二叉树具有 n个结点。如果 n为偶数,则在该二叉树中有 n/2个叶子结点以及 n/2-1个度为 2的结点,还有 1个是度为 1的结点;如果 n为奇数,则在该二叉树中有 n/2+1个叶子结点以及 n/2个度为 2的结点,没有度为 1的结点。 在本题中,完全二叉树共有 839个结点, 839是奇数,因此,在该二叉树中有420个叶子结点 以及 419个度为 2的结点,没有度为 1的结点。 39 【正确答案】 格式化模型 【试题解析】 数据模型分为格式化模型与非格式化模型,层次模型与网状模型属于格式化模型。 40 【正确答案】 关系
31、【试题解析】 在关系模型中,把数据看成一个二维表,每一个二维表称为一个关系。 41 【正确答案】 D 【试题解析】 char( )在这里作为强制类型转换函数使用,将 F前相隔两个的字符显示出来,故应为字符 D。 42 【正确答案】 int和 double 【试题解析】 整型和双精度型。 注意除非定义了 float变量,实型常量隐含为 double型。 43 【正确答案】 template class T T DBL(Tn)return n+n; 【试题解析】 本题考核函数模板的使用。函数模板的一般说明形式如下:template类型形参表返回类型函数名 (形参表 )/函数体 )。函数调用方式为:
32、函数名 (实参表 );。形参表中的类型以实参表中的实际类型为依据。由此易得答案。 44 【正确答案】 Worker*r=new Workern 【试题解析】 在 C+中动态分配 栈上内存的命令是 new,释放命令是 delete,注意和 C语言中的 mallc和 free向对应。 45 【正确答案】 this 【试题解析】 const在修饰指针的时候考生容易混淆。如果 const位于星号的左侧,则 const就是用来修饰指针所指向的变量,即指针指向为常量;如果 const位于星号的右侧, const就是修饰指针本身,即指针本身是常量。而用 const声明了返回值后, const按照 “修饰原则
33、 “进行修饰,起到相应的保护作用,即保护 this指针不被修改。 46 【正确答案】 iostreflm.h 【试题解析】 本头文件很重要,包含了基本输入输出所需要的库函数。 47 【正确答案】 良好 优秀 良好 【试题解析】 本题主要考察 switch语句中 break语句的使用。由于 case A和 case B之间没有 break语句,导致在输出 “优秀 ”之后顺序执行并输出了 “良好 ”,这与原来的设计思路是不符的。 48 【正确答案】 Location 【试题解析】 本题主要考察引用的定义。根据上下文以及注释可以获取所需要的类型及名称信息。 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