1、国家二级( C+)笔试模拟试卷 64及答案与解析 1 算法的时间复杂度是指 ( )。 ( A)执行算法程序所需要的时间 ( B)算法程序的长度 ( C)算法执行过程中所需要的基本运算次数 ( D)算法程序中的指令条数 2 下列叙述中,不正确的是 ( )。 ( A)一个数据结构中的元素在计算机存储空间中的位置关系与逻辑关系可能不同 ( B)一个数据结构中的元素在计算机存储空间中的位置关系与逻辑关系一定不同 ( C)数据的存储结构,也称数据的物理结构。 ( D)数据的存储结构与数据的逻辑结构是不同 的 3 下列数据结构不属于线性表的是 ( )。 ( A)一个 n维向量 ( B)矩阵 ( C)二叉树
2、 ( D)队列 4 在一棵度为 3的树中,度为 3的节点有 2个,度为 2的节点有 1个,度为 1的节点有 2个,那么,该树的叶节点数目为 ( )。 ( A) 4 ( B) 5 ( C) 6 ( D) 7 5 结构化程序设计所规定的三种基本控制结构是 ( )。 ( A)输入、处理、输出 ( B)树形、网形、环形 ( C)顺序、选择、循环 ( D)主程序、子程序、函数 6 信息隐蔽的概念与下述哪一种概念直接 相关 ( )。 ( A)软件结构定义 ( B)模块独立性 ( C)模块类型划分 ( D)模块耦合度 7 下列关于软件工程概念的描述中,错误的是 ( )。 ( A)软件工程概念的出现源自软件危
3、机 ( B)软件工程就是试图用工程、科学和数学的原理与方法研制,维护计算机软件的有关技术及管理方法 ( C)软件工程包括 3个要素,即方法、工具和过程 ( D)软件工程不重视在软件开发过程中应用工程化原则 8 软件测试的目的是 ( )。 ( A)证明软件系统中存在错误 ( B)找出软件系统中存在的所有错 误 ( C)尽可能多地发现软件系统中的错误和缺陷 ( D)证明软件的正确性 9 数据是指所有能输入到计算机之中并被计算机程序处理的 ( )。 ( A)文字 ( B)字母 ( C)符号 ( D)数字 10 请指出在顺序表 2、 5、 7、 10、 14、 15、 18、 23、 35、 41、
4、52中,用二分法查找关键码 12需做 ( )次关键码比较。 ( A) 2 ( B) 3 ( C) 4 ( D) 5 11 关于面向对象的程序设计方法,下列说法正确的是 _ . ( A) “封装性 ”指的是将不同类型的相关数 据组合在一起,作为一个整体进行处理 ( B) “多态性 ”指的是对象的状态会根据运行时要求自动变化 ( C)基类的私有成员在派生类的对象中不可访问,也不占内存空间 ( D)在面向对象的程序设计中,结构化程序设计方法仍有重要作用 12 判断字符型变量 ch是否为大写英文字母,应使用表达式 _ . ( A) ch =A else cout *ptr; ptr+; return
5、0; ( A) HELLO,WORLD ( B) Hello,World ( C) hELLO, wORLD ( D) hello,world 16 已知: int m=10;在下列定义引用的语句中,正确的是 _。 ( A) int void fun() static iht i=1; std:cout i+ ,; std: cout i ,; int main() fun(); fun(); return 0; 程序执行后的输出结果是 _。 ( A) 1, 2, 1, 2, ( B) 1, 2, 2, 3, ( C) 2, 0, 3, 0, ( D) 1, 0, 2, 0, 20 已知函数
6、f的原型是: void f(int *a, long b);,变量 v1、 v2的定义是: int v1; long v2;,正确的调用语句是 _。 ( A) f(v1, class MyClass public: MyClass(int n) number=n; / 拷贝构造函数 MyClass(MyClass -MyClass() private: int number; ; MyClass fun(MyClass p) MyClass temp(p); return temp; int main() MyClass obj1(10), obj2(0); MyClass obj3(obj
7、1); obj2=fun(obj3); return 0; 程序执行时, MyClass 类的拷贝构造函数被调用的次数是 _ 次。 ( A) 5 ( B) 4 ( C) 3 ( D) 2 25 在公有派生的情况下,派生类中定义的成员函数只能访问原基类的 _ 。 ( A)公有成员和私有成员 ( B)私有成员和保护成员 ( C)公有成员和保护成员 ( D)私有成员、保护成员和公有成员 26 在 C+中用来实现运行时多态性的是 _ 。 ( A)重载函数 ( B)析构函数 ( C)构造函数 ( D)虚函数 27 一个类可以同时继承多个类,称为多继承。下列关于多继承和虚基类的表述中,错误的是 _ 。 (
8、 A)每个派生类的构造函数都要为虚基类构造函数提 供实参 ( B)多继承时有可能出现对基类成员访问的二义性问题 ( C)使用虚基类可以解决二义性问题并实现运行时的多态性 ( D)建立派生类对象时,虚基类的构造函数会首先被调用 28 在一个类体的下列声明中,正确的纯虚函数声明是 _ 。 ( A) virtual void vF()=0; ( B) void vf (int)=0; ( C) virtual int vf (int); ( D) virtual void vf (int)” 29 在下面的运算符重载函数的原型中,错误的是 _ 。 ( A) Volume operator-(doub
9、le,double); ( B) double Volume: operator-(double); ( C) Volume Volume: operator-(Volume); ( D) Volume operator-(Volume,Volume); 30 下列是模板声明的开始部分,其中正确的是 _ 。 ( A) template T ( B) template class T1,T2 ( C) template class T1,class T2 ( D) template class T1; class T2 31 执行语句序列 ofstream outfile (“DATA. DAT
10、“); if(.)cout “OK“; else cout “FAIL“;后,如果文件打开成功,显示 “OK“,否则就显示 “FAIL“。由此可知,上面 if语句的 .处的表达式应是 _ 。 ( A) outfile.fail ()或 outfile ( B) outfile. good() 或 outfile ( C) outfile.good ()或 !outfile ( D) outfile.fail()或 !outfile 32 C+流中重载的运算符 “ “是一个 _ 。 ( A)用于输出操作的非成员函数 ( B)用于输入操作的非成员函数 ( C)用于输出操作的成员函数 ( D)用于输
11、入操作的成员函数 33 有以下类定义: class Point public: Point(int x=0,int y=0)_x=x; _y=y; void Move(int x Off, int y Off) _x+=x Off; _y+=y Off; void Print() const cout ( _x , _y ) end 1; private: int _x,_y; 下列语句中会发生编译错误的是 _。 ( A) Point pt; pr. Print(); ( B) const Point pt; pt. Print(); ( C) Point pt; pt. Move(1,2);
12、 ( D) const Point pt; pt. Move(1,2); 34 有以下类定义 : class MyClass private: int id; char gender; char *phone; public: MyClass():id(0),gender(#),phone(NULL) MyClass(int no,char ge=#,char *ph=NULL) id=no;gender=ge;phone=ph; ;下列类对象定义语句中错误的是 _。 ( A) MyClass myObj; ( B) MyClass myObj(11,“13301111155“); ( C)
13、MyClass my0bj(12,m); ( D) MyClass myObj(12); 35 有以下程序 : #include iostream using namespace std; class Complex public: Complex(double r=0,double i=0):re(r),im(i) double zeal() const return re; double imag() const return im; Complex operator+(Complex c) const return Complex(re+c.re,im+c.im); private: d
14、ouble re,im; ; int main() Complex a=Complex(1,1)+Complex(5); cout a.real() +a.imag() i end 1; return 0; 程序执行后的输出结果是 _。 ( A) 6+6i ( B) 6+1i ( C) 1+6i ( D) 1+1i 36 长度为 n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为【 】。 37 用树型结构表示实体类型及实体间联系的数据模型称为【 】。 38 类是一个支持集成的抽象数据类型,而对象是类的【 】。 39 数据流图的类型有【 】和事务型
15、。 40 当数据的物理结构 (存储结构、存取方式等 )改变时,不影响数据库的逻辑结构,从而不致引起应用程序的变化,这是指数据的【 】。 41 派生类的成员一 般分为两部分,一部分是【 】,另一部分是自己定义的新成员。 42 以下程序输出的结果是【 】。 #include iostream.h void main() int a=5, b=4, c=3, d; d=(a b C) ; cout d; 43 设 i, j, k均为 int型变量,则执行完 for(i=0, j=10; i =j; i+, j-)k=i+j;语句后, k的值为【 】。 44 如果要把返回值为 void的函数 A声明为
16、类 B的友元函 数,则应在类 B的定义中加入的语句是【 】。 45 如果类 B继承了类 A,则称类 A为类 B的基类,类 B称为类 A的【 】。 46 将 x+y中的 +运算符用友元函数重载应写为【 】。 47 下列程序段的输出结果是【 】。 cout fixed 509.123456789 endl; 48 设置虚基类的目的是【 】,通过【 】表示虚基类。 国家二级( C+)笔试模拟试卷 64答案与解析 1 【正确答案】 C 【试题解析】 本题考查算法的时间复杂度,这个知识点是重点之一,考生 应该好好理解掌握。算法的时间复杂度是指执行算法所需要的计算工作量,也就是算法在执行过程中所执行的基本
17、运算的次数,而不是指程序运行需要的时间或是程序的长度。 2 【正确答案】 A 【试题解析】 一个数据结构中的元素在计算机存储空间中的位置关系与逻辑关系不一定相同,例如在家庭成员的数据结构中, “儿子 ”和 “女儿 ”都是 “父亲 ”的后件,但在计算机存储空间中,根本不能将 “儿子 ”和 “女儿 ”这两个数据元素的信息都紧邻存放在 “父亲 ”这个数据元素后边。但在一年四季的数据结构中, “春 ”是“夏 ”的前件,在计算机存储空间中 ,就可以把 “春 ”存储在 “夏 ”的前面。数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构,也称数据的物理结构。 3 【正确答案】 C 【试题解析】 n
18、维向量、矩阵、队列都满足线性表的要求:一是只有一个根节点,它无前件:二是只有一个终端节点,它无后件;三是除根节点和终端节点,其他节点都有且只有一个前件,也有且只有一个后件。所以它们都是线性表。二叉树不满足线性表所要求的除根节点和终端节点,其他节点都有且只有一个前件,也有且只有一个后件,所以答案是 C。 4 【正确答案】 B 【试题解析 】 假设根节点度为零时,叶节点数为 1;若树中每出现一个度为 1的节点,则叶子数增加 0个;每出现 1个度为 2的节点,叶子数增加 1个;每出现 1个度为 3的节点,则叶子数增加 2个 依此类推,每个度为 m的节点,可增加m-1个叶子数。 5 【正确答案】 C
19、【试题解析】 本题涉及结构化程序设计的三种基本控制结构,考生应该掌握这些基本的东西。结构化定理还进一步表明,任何一个复杂问题的程序设计都可以用顺序、选择和循环这三种基本结构组成,且它们都具有以下特点:只有一个入口;只有一个出口;结构中无死循环,程序中三种基 本结构之间形成顺序执行关系。 6 【正确答案】 B 【试题解析】 在面向对象方法中,信息隐蔽是通过对象的封装性来实现的,因此信息隐蔽的概念与模块独立性直接相关,模块独立性越好,则信息隐蔽性越好。 7 【正确答案】 D 【试题解析】 软件工程是个重要概念,考生应在理解的基础上掌握。选项 A、B、 C都是正确的。软件工程强调在软件开发过程中应用
20、工程化原则,选项 D是错误的。 8 【正确答案】 C 【试题解析】 软件测试的目的不是证明系统的正确或是系统中的错误,而是要发现错误以便编程人员能 够改正。系统中的错误和缺陷往往受到很多偶然因素的影响,不可能完全发现,只能是尽可能地去发现并加以改正。 9 【正确答案】 C 【试题解析】 数据不是指某一种文字、字母或数字,实际上就是描述事物的符号记录,是抽象的概念。 10 【正确答案】 C 【试题解析】 二分法查找首先用想要查找的关键词 k与中间位置的节点关键词相比较,这个中间节点把线性表分成了两个子表,若比较结果相等,则查找完成;若不等,再根据 k与中间节点关键词的比较大小确定下一步查找哪个子
21、表,这样递归下去,直到找到满足条件的节点,或 者该线性表中没有这样的节点。本题中第 1次和 15比较:第 2次和 7比较:第 3次和 10比较;第 4次和 14比较;比较后结束,没找到。 11 【正确答案】 D 【试题解析】 封装是指类的数据对外的不可见性并通过类来操作数据,多态性是对象的动作会随着对象的不同而不同,基类的私有成员在派生类的对象中虽然不可以访问,但是却占据了一定的内存空间。 12 【正确答案】 D 【试题解析】 判断 ch是否为大写英文字母, A用的是 &,位操作符,而 B用的是或操作符, C不符合 C+语法,所以 D是正确的。 13 【正 确答案】 C 【试题解析】 (x+y
22、)+操作应该是, (x+y)=x+y,然后 (x+y)+,这是不正确的操作,所以此题应该选择 C。 14 【正确答案】 D 【试题解析】 switch 条件选择语句,当运行到符合条件后,若无 break,则继续运行下面的语句。即 “case 1; ”符合条件,执行了 “cout 1”;又执行了 “cout 2; ”。 15 【正确答案】 A 【试题解析】 对于 str的每个字母,如果是大写字母或者是非字母,就直接打印出来。如果是小写字母,就转化成大写 字母,然后打印。 A-a正是大小写字母的 ASCII码之差。 16 【正确答案】 A 【试题解析】 正确的引用正是在变量定义时,在变量前面加上,
23、 。而 int y=&m;的形式,意思是取得 m的地址值赋给 y。 17 【正确答案】 D 【试题解析】 C+中函数的声明,如果第一个参数有默认值,那么第二个参数也应该有默认值,否则出错。 18 【正确答案】 B 【试题解析】 函数的重载是允许多个函数共享同一个函数名,但是针对不同参数类型提供操作。 19 【正确答案】 D 【试题解析】 程序中, static 声明了一个局部静态变量,在程序运行期间一直存在,第二次调用函数改变了该值。全局变量一直未改变。 20 【正确答案】 C 【试题解析】 v1是需要传递地址给 a, b是引用。 21 【正确答案】 B 【试题解析】 类被创建后调用构造函数,
24、有 3个初始化对象; a,b1, b0。 22 【正确答案】 A 【试题解析】 一个类是另一个类的友元,意味着该类的每一个成员函数都是另 个类的友元函数。 23 【正确答案】 B 【试题解析】 new 分配的内存需要程序自己释放,系统不会自动回收,除非程序结束。动态分配内存失败,系统不会崩溃。 24 【正确答案】 B 【试题解析】 对象初始化和复制时,都要拷贝构造函数。所以程序执行一共调用了 4次构造函数 25 【正确答案】 C 【试题解析】 公有继承派生类不能访问原基类的私有成员。 26 【正确答案】 D 【试题解析】 虚函数在派生类被改变,类的对象在接受同样的消息时,所做出的响应不同。 2
25、7 【正确答案】 C 【试题解析】 虚基类不能解决二义性的问题。 28 【正确答案】 A 【试题解析】 虚函数声明,语法定义; virtual 返回类型 函数名 (参数表 )=0 29 【正确答案】 A 【试题解析】 运算符重载的语法定义。 30 【正确答案】 C 【试题解析】 模板声明的语法定义。 31 【正确答案】 C 【试题解析】 打开成功 outfail.good 和 !outfile 都是真值。 32 【正确答案】 B 【试题解析】 用于输入操作,用于输出操作,都是非成员函数。 33 【正确答案】 D 【试题解析 】 const 修饰符改变值出错。 34 【正确答案】 B 【试题解析
26、】 初始化应该和构造函数相同。 35 【正确答案】 B 【试题解析】 类对 “+”重载后,对应的变量相加。 36 【正确答案】 n/2 【试题解析】 在线性表的任何位置插入一个元素的概率相等,即概率为P=1/(n+1),则插入一个元素时所需移动元素的平均次数为 E=1/(n+1) (n-i+1) =n/2。 37 【正确答案】 层次模型 【试题解析】 用树形结构表示实体类型及实体间联系的数据模型称为层次模型 ,用有向图结构表示实体类型及实体间联系的数据模型称为网状模型,用二维表格结构表示实体及其联系的数据模型称为关系模型。 38 【正确答案】 实例 【试题解析】 将属性、操作相似的对象归为类,
27、也就是说,类是具有共同属性、共同方法的对象的集合。所以,类是对象的抽象,对象则是其对应类的一个实例。 39 【正确答案】 变换型 【试题解析】 典型的数据流类型有两种:变换型和事务型,变换型是指信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路 变换成外部形式离开软件系统;在很多软件应用中,存在某种作业数据流。它可以引发一个或多个处理,这此处理能够完成液作业要求的功能,这种数据流就叫做事务。 40 【正确答案】 物理独立性 【试题解析】 数据独立性是数据与程序间的互不依赖性,即数据库中数据独立于应用程序而不依赖于应用程序。也就是说,数据
28、的逻辑结构、存储结构与存取方式的改变不会影响应用程序。数据独立性一般分为物理独立性与逻辑独立性两级。 41 【正确答案】 从基类继承的成员 【试题解析】 派生类的成员由继承的成员和自己定义的成员组 成。 42 【正确答案】 0 【试题解析】 水题的关键在于对变量 c的赋值运算: d=(a b c) d=(5 4 3) 先算 5 4,为真,得 1,即: d=(1 3),此时 1 3,为假,得 0。 43 【正确答案】 10 【试题解析】 该 for语句以 i为 0、 j为 10初始化,循环条件是 i =j每次循环后i增 1、 j减 1,循环体是将 i与 j的和赋给 k。这样变量 k将保存的是最后
29、一次赋给它的值。一次循环后 i为 1、 j为 9,二次循环后 i为 2、 j为 8, ,五次循环后 i为 5、 j为 5,继续第 六次循环,将 i与 j的和 10存于 k后, i为 6、 j为 4,结束循环。所以循环执行后 k为 10。 44 【正确答案】 friend void A(); 【试题解析】 C+中类的友元函数在声明时应在该函数前面加上关键字 friend,同样如果要声明一个类为另一个类的友元类也要在前面类名前加上 friend。 45 【正确答案】 派生类 【试题解析】 如果类 A为类 B的基类,那么类 B称为类 A的派生类。 46 【正确答案】 operator+(x, y) 【试题解析】 C+中用成员函数重载 x+y为 x operator +(y);,用友元函数重载 x+y为 operator+(x, y)。 47 【正确答案】 509.123457 【试题解析】 fixed的意义是在小数点后保留六位,所以 fixed输出为509.123457。 48 【正确答案】 解决二义性问题 用关键字 virtual 【试题解析】 解决二义性的两个基本方法一是用域名进行限制,二是用虚基类的方法。注意: C+语言中解决二义性的方法。