1、国家二级( C+)笔试模拟试卷 62及答案与解析 1 下列数据结构中,按先进后出原则组织数据的是 ( A)线性链表 ( B)栈 ( C)循环链表 ( D)顺序表 2 具有 3个结点的二叉树有 ( A) 2种形态 ( B) 4种形态 ( C) 7种形态 ( D) 5种形态 3 设有下列二叉树: 对此二叉树前序遍历的结果为 ( A) ZBTYCPXA ( B) ATBZXCYP ( C) ZBTACYXP ( D) ATBZXCPY 4 结构化程序设计主要强调的是 ( A)程序的规模 ( B)程序的效率 ( C)程序 设计语言的先进性 ( D)程序易读性 5 程序的 3种基本控制结构是 ( A)过
2、程、子过程和分程序 ( B)顺序、选择和重复 ( C)递归、堆栈和队列 ( D)调用、返回和转移 6 下列叙述中,不属于测试的特征的是 ( A)测试的挑剔性 ( B)完全测试的不可能性 ( C)测试的可靠性 ( D)测试的经济性 7 需求分析中开发人员要从用户那里了解 ( A)软件做什么 ( B)用户使用界面 ( C)输入的信息 ( D)软件的规模 8 下列关系模型中,能使经运算后得到的新关系中属性个数多于原来关系 中属性个数的是 ( A)选择 ( B)连接 ( C)投影 ( D)并 9 下列叙述中,正确的是 ( A)用 E-R图能够表示实体集间一对一的联系、一对多的联系和多对多的联系 ( B
3、)用 E-R图只能表示实体集之间一对一的联系 ( C)用 ER图只能表示实体集之间一对多的联系 ( D)用 ER图表示的概念数据模型只能转换为关系数据模型 10 “年龄在 18-25之间 ”这种约束是属于数据库当中的 ( A)原子性措施 ( B)一致性措施 ( C)完整性措施 ( D)安全性措施 11 以下哪个特征不是面向对象 思想中的主要特征 ? ( A)多态 ( B)继承 ( C)封装 ( D)垃圾回收 12 以下哪个不是 C+语言中的有效标识符 ? ( A) 34a ( B) _AB ( C) A_B ( D) A25 13 C+中运算符优先级由高到低排列正确的是 ( A) + + |
4、( B) * |, ( C) sizeof% + ( D), i 0; +i); ( D) for( ; ); 16 关于 continue语句叙述不正确的是 ( A) continue语句用于循环体中,结束循环 ( B) continue语句用于 循环体中,它使执行流跳出循环体中尚未执行的语句,并进行下一循环判断 ( C) continue可以用于 if语句中 ( D) continue语句不能代替 break语句 17 以下定义数组中错误的是 ( A) int a 10; ( B) int a 220; ( C) int a20 ; ( D) int a; 18 下面程序的执行结果是 #i
5、nclude“iostream h“ void main() int * p, r; p=new int; *p=20; r=sizeof(*p); cout r endl; delete p; ( A)程序错误 ( B)内存为 20地址的大小 ( C) 20 ( D) 4 19 下面程序错误的语句是 #include“iostream h“ void main() int A=0; int 25 下面程序的执行结果为 #include“iostream“ using namespace std; class A int a; public: void Sera(int x)a=x; void
6、 Display_a()cout a endl; ; class B int b; public: void Setb(int x) b=x; void Dispaly_b() cout b endl; ; class C: public A, private B private: int c; public: void Setc(int x, int y, int z) c=z;Sera(x); Serb(y); void Display_c()cout c endl; ; void main() C cc; cc Seta(1); cc Display_a(); cc Setc(2, 2,
7、 3); cc Dispaly_b(); cc Display_c(); ( A)输出为 2 2 3 ( B)有错误在第 5行 ( C)输出为 1 2 3 ( D)有错误在第 7行 26 虚函数必须是类的 ( A)成员函数 ( B)友元函数 ( C)构造函数 ( D)析构函数 27 多态性指的是 ( A)以任何方式调用一个虚函数 ( B)以任何方式调用一个纯虚函数 ( C)借助于指向对象的基类指针或引用调用一个虚函数 ( D)借助 于指向对象的基类指针或引用调用一个纯虚函数 28 不能重载的运算符是 ( A) new ( B) sizeof ( C) * ( D) + 29 只能作为成员函数重
8、载的是 ( A) = ( B) + ( C) * ( D) new 30 关于模板下列说法不正确的是 ( A)用类模板定义一个对象时,不能省略实参 ( B)类模板只能有虚拟类型参数 ( C)类模板本身在编译中不会生成任何代码 ( D)类模板的成员函数都是模板函数 31 语句 cout setprecision(2) 1024.4567;的 输出结果为 ( A) 1024.4567 ( B) 1024 ( C) 1024.45 ( D) le+003 32 下面程序的结果为 #include“iostream h“ void change(int a, int b) int temp; temp
9、=a; a = b; b=temp; void main() int m, n; m=8; n=9; change(m, n); cout m “ “ n endl; ( A) 8 9 ( B) 9 8 ( C)程序有错误 ( D) 9 9 33 下面程序的结果是 #include“iostream h“ void main() char*str; str=“test!“; cout str5; ( A)程序错误 ( B) ! ( C) 0 ( D)为空字符 34 下面程序输出的结果为 #include“iostream h“ class A public: A()cout “CLASSA“
10、endl; A() ; class B: public A public: B()cout “CLASSB“ endl; B() ; void main() A * p; p=new B; B *q; q=new B; ( A) CLASS A CLASS B ( B) CLASS A CLASS B CLASS B ( C) CLASS A CLASS B CLASS A CLASS B ( D) CLASS A CLASS B CLASS B CLASS B 35 c+语言函数中不能由系统自动生成的是 ( A)析构函数 ( B)构造函数 ( C)内联函数 ( D)拷贝构造函数 36 数据的
11、逻辑结构有线性结构和【 】 两大类。 37 顺序存储方法是把逻辑上相邻的结点存储在物理位置【 】的存储单元中。 38 一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的【 】。 39 软件工程研究的内容主要包括:【 】技术和软件工程管理。 40 关系操作的特点是【 】操作。 41 开发一个 C+语言程序的步骤通常包括编辑、【 】、链接、运行和调试。 42 假设 int a=1, b=2;则表达式 a+-b的值为【 】。 43 下面程序的输出结果为【 】。 #include iostream h) Void main() int num=0, i=8; do i-; nu
12、m+ while(-i); cout num end1; 44 通过使用 new和 delete两个运算符进行的分配为【 】存储分配。 45 下面程序的运行结果为【 】。 #include iostream h void fun(intx=0, iot y=0) cout X y; Void main() fun(5); 46 C+语言支持的两种多态性分别是编译时的多态性和【 】的多态性。 47 重载的运算符保持其原有的【 】、优先级和结合性不变。 48 cout.put(A);,还可以表示为【 】。 49 下面程序的运行结果是【 】和【 】。 #include iostream h #def
13、ine N 10 #defines(x)X*X #define f(x)(X*X) void main() int il, i2; i1=1000/s(N); i2=1000/f(N); cout i1 “ “ i2; 50 【 】是实现 c+语言编译时多态性的机制,【 】是实现 C+语言运行时多态性的机制。 国家二级( C+)笔试模拟试卷 62答案与解析 1 【正确答案】 B 【试题解析】 栈是限定在一端进行插入与删除的线性表。在栈中,允许插入与删除的一端称为栈顶,而不允许插入与删除的另一端称为栈底。栈顶元素总是最后被插入的元素,从而也是最先能被删除的元素;栈底元素总是最先被插入的元素,从而
14、也是最后才能被删除的元素,即栈是按照 “先进后出 ”或 “后进先出 ”的原则组织数据的。注意:队列组织数据的原则是 “先进先出 ”或 “后进后出 ”。注意:数据结构中,栈和队列组织数据的原则。 2 【正确答案】 D 【试题解析】 具有 3个结点的二叉树具有以下的几种形态:注意:二叉树的结构及画法。 3 【正确答案】 B 【试题解析】 所谓二叉树的的序遍历 (DLR)是指在访问根结点、遍历左子树与遍历右子例这 3者中,首先访问根结点,然后遍历左子树,最后遍历右子树,并且,在遍历左右子树时,上述规则同样适用,即 “根 -左 -右 ”。故该二叉树的前序遍历结果为 “ATBZXCYP“。注意:对于本题
15、,若使用后序遍历和中序遍历的结果分别为 “ZBTYCPXA“和 “TZBACYXP“。 4 【正确答案】 D 5 【正确答案】 B 【 试题解析】 采用结构化程序设计方法编写程序,可使程序结构良好、易读、易理解、易维护,它包括 3种基本控制结构,分别是顺序结构、选择结构和重复结构 (义称循环结构 )。注意:控制程序结构的方法和作用。 6 【正确答案】 C 【试题解析】 软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定。它有 3个方面的重要特征,即测试的挑剔性、完全测试的不可能性及测试的经济性。其中没有测试的可靠性这一说法。注意:软件测试与软件调试的概念,以及
16、相应的方法。 7 【正确答案】 A 【试题解析】 需求分析是软件定义时期的最后一个阶段,它的基本任务就是准确回答 “系统必须做什么 ”这个问题即软件系统功能,需求分析的任务还不是确定系统怎样完成它的工作,而仅仅是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。 8 【正确答案】 B 【试题解析】 关系代数中包括传统的集合运算和专门的关系运算。经过选择或投影运算得到的新关系的属性个数最多不会超过原关系中的属性个数。经过连接运算得到的新关系最多不少于原关系中属性的个数。 9 【正确答案】 A 【试题解析 】 两个实体之间的联系实际上是实体集间的函数关系,这种函数关系可以
17、有下面几种,即一对一的联系、一对多 (或多对一 )的联系和多对多的联系;概念模型便于向各种模型转换。由于概念模型不依赖于具体的数据库管理系统,因此,容易向关系模型、网状模型和层次模型等各种模型转换。 10 【正确答案】 C 【试题解析】 数据库的完整性是指数据的正确性和相容性 (如学生的学号必须惟一,性别只能是女或男等 ),数据库是否具备完整性关系到数据库系统能否真实反映现实世界,因此维护数据库的完整性是非常重要的。注意:数据库的各种特性及 表达形式。 11 【正确答案】 D 【试题解析】 面向对象语言的基本特性是封装,继承和多态。注意:垃圾回收是Java的主要特点。注意:要掌握面向对象的优点
18、。 12 【正确答案】 A 【试题解析】 在 C+语言中,标识符只能由数字,字母,下划线组成,并且第一个字符不能是数字。注意:选项 A)是以数字开始的。注意:关键字不能用作标识符。 13 【正确答案】 A 【试题解析】 运算符的优先级是 最高,其次是 , (),等,然后是 +, -,再低还有 - *, *, +, =。注意 :逗号的优先级最低。 14 【正确答案】 C 【试题解析】 理解宏定义 sum(a, b)a*b中 a为 1 +2 b为 3,故 sum(1+2,3)=1+2*3,即宏定义的替换过程是原样替换。注意:选项 B)的计算方法是 (1+2)*3 =9是错误的,注意,不要随意的加括
19、号。 注意:宏定义与函数的区别。 15 【正确答案】 A 【试题解析】 for循环的一般格式为 for(初始化部分;终止条件判断部分;迭代部分 )循环体; 说明如下: for循环开始时,首先执行初始化操作,然后判断终止条件是否满足,如果 满足,则执行循环体中的语句,最后执行迭代部分。完成一次循环后,重新判断终止条件。注意:在 for语句中,如果省略了终止条件判断部分,开且在语句中没有 break,或者是终止条件判断部分始终没有终止,都将出现死循环。注意: for循环语句可由 while循环语句来代替。 16 【正确答案】 A 【试题解析】 continue是跳出了本次循环中尚未执行的语句,重新
20、执行循环,但没有终止循环。注意:注意 break, continue和 goto语句的用法和区别。 17 【正确答案】 C 【试题解析】 二维数 面的二维不能省略。注意:数组的下标是从零开始的。 18 【正确答案】 D 【试题解析】 理解 sizeof的用法,它可以运算出各种数据类型所占内存空间的多少。注意:选项 C)中是指针 p所指向的内存地址中内容是 20。 注意:在用完申请后的内存应立刻释放。 19 【正确答案】 C 【试题解析】 引用必须在第一时间进行赋值, int & B没有在第一时间赋值故错误。注意:引用的方式,引用和指针应用的比较。 20 【正确答案】 A 【试题解析】 本题函数
21、 Max的功能是求出两个整数中的较大者 ,并且通 return语句返回。注意: return语句的用法,注意 return的条件。 21 【正确答案】 C 【试题解析】 如果一个函数中有多个参数则默认参数应从有到左逐个定义。注意:选项 C)没有给 a传递仟何的参数,所以是错误的。 注意: 函数含有默认参数时的调用方式。 22 【正确答案】 C 【试题解析】 C+语言中类定义中默认的类的访问权限是 private。注意: C+语言中没有 default权限。注意:结构体默认的访问权限是 public,注意它们之间的区别。 23 【正确 答案】 C 【试题解析】 构造函数的函数名必须和类名相同;构
22、造函数可以有一个,也可以有多个;构造函数没有返回值。注意:构造函数可以被重载。 24 【正确答案】 C 【试题解析】 固定的一种拷贝方式就是类名 : 类名 const类名 &引用对象名注意:如果一个类中没有声明,拷贝构造函数,编译器会自动生成一个如上述形成的仅有的拷贝构造函数。 25 【正确答案】 D 【试题解析】 private继承不能调用 Display_b函数, public继承可以调用基类中非 private成员。注意:类的继承方式 public,proctected和 private的区别。 26 【正确答案】 A 【试题解析】 虚函数只能是类的成员函数,不能是构造函数或析构函数。注
23、意:虚函数可以是另 个类的友元函数。 27 【正确答案】 C 【试题解析】 多态性主要是指借助于指向对象的基类指针或引用调用一个虚函数。注意:注意多态和重载的关系和应用。 28 【正确答案】 C 【试题解析】 c+语言规定 *运算符是不能被重载的。注意:还有, - * , , ? :这几个运算符不能重载 。 29 【正确答案】 A 【试题解析】 C+语言规定 “=”运算符只能作为成员函数重载。 30 【正确答案】 B 【试题解析】 类模板可以有虚拟类型参数。注意:模板及其周边概念和模板的实现。 31 【正确答案】 D 【试题解析】 setprecision()函数为设置小数位数。注意: C+中
24、 I/O流各种函数的使用例如: setw(), setfill()。 32 【正确答案】 A 【试题解析】 两数只在函数 change内被使用,函数调用完后该内存被释放,因此没有交换两 数。注意:交换两个数的方法简单说有两种一是使用指针,二是用引用。 33 【正确答案】 D 【试题解析】 0输出为不显示,只代表一个字符串的结束。注意: C+语言中各种字符转义序列的意义和应用。 34 【正确答案】 C 【试题解析】 每实例化一个类就要调用其构造函数,结束运行该实例后调用析构函数。注意:类的实例化和构造函数、析函数的调用方式和何时调用。 35 【正确答案】 C 【试题解析】 一个类中由系统自动生成
25、的函数有构造函数,析构函数,拷贝构造函数。注意:内联函数只能由 用户自己定义。注意:类能自动生成的函数,尤其注意构造函数和析构函数,还有拷贝构造函数。 36 【正确答案】 非线性结构 【试题解析】 数据的逻辑结构有线性结构和非线性结构两大类。 37 【正确答案】 相邻 【试题解析】 常用的存储表示方法有 4种,顺序存储、链式存储、索引存储、散列存储。其中,顺序存储方法是把逻辑上相邻的结点存储在物理位置咀相邻的存储单元中。 38 【正确答案】 可重用性 【试题解析】 本题考查了继承的优点:相似的对象可以共享程序代码和数据结构,从而大大减少了程序 中的冗余,提高软件的叫重用性。 39 【正确答案】
26、 软件开发 【试题解析】 基于软件下程的目标,软件工程的理论和技术性研究的内容主要包括:软件开发技术和软件工程管理。软件开发技术包括:软件开发方法学、开发过程、开发工具和软件工程环境,其主体内容是软件开发方法学。软件工程管理包括:软件管理学、软件工程经济学,以及软件心理学等内容。 40 【正确答案】 集合 【试题解析】 在关系操作中,所有操作对象与操作结果都是关系。而关系定义为元数相同的元组的集合。因此,关系操作的特点是集合操作。 41 【正确答案】 编译 【试题解析】 C+语言是以编译方式实现的高级语言, C+语言程序的实现,必须要使用某种 C+语言的编译器对程序进行编译。 42 【正确答案
27、】 2 【试题解析】 因为运算符 +和 -都是右结合的且优先级高于双目运算符 +,所以上式的运算顺序为先 a+, -b,再 a+b,最后 a自加 1。 43 【正确答案】 4 【试题解析】 本题考查的是考生分析简单循环结构的能力。大体过程为第 1次进入循环, i变成 7, num变为 1, i变为 6;第 2次进入循环, i变成 5, num变 为2, i变为 4;第 3次进入循环, i变成 3, num变为 3, i变为 2:第 4次进入循环, i变成 l, num变为 4, i变为 0,循环结束。 44 【正确答案】 动态 【试题解析】 本题考查的是对动态分配内存的掌握,在 C+语言中,使
28、用关键字Hew和 delete进行动态内存中请和释放。 45 【正确答案】 50 【试题解析】 本题考查的是函数的默认参数,如果一个函数中有多个参数,则默认参数应从右至左逐个定义,所以题目中 x使用参数 5, y使用默认参数 0。 46 【正确答案】 运行时 【试题解 析】 本题考查的是多态的概念,多态性主要是指发出同样的消息而被不同类型的对象接收时导致完全不同的行为,它一般分为编泽时的多态性和运行时的多态性,比如函数重载和虚函数。 47 【正确答案】 操作符个数 【试题解析】 本题考查的是运算符重载的概念,用户重新定义的运算符不改变原运算符的优先性和结合性,也不改变运算符的语法结构也就是说重
29、载运算符不会产生新的运算符。 48 【正确答案】 cout A; 【试题解析】 本题考查的是 C+语言的流输出操作。 coat是 C+语言定义好的输出流对 象,其中包括成员函数 put(char c),具功能是输出 个字符到屏幕,实际上 C+语言中已经重载了操作符 “ ”作为流输出操作符。 49 【正确答案】 1000 10 【试题解析】 对于 define宏定义语句,系统会在编译前进行替换。本题替换过程如下: i1=1000/s(N) i1=1000/s(10) i1=1000/10*10 i1=1000 i2=1000/f(N) i2=1000/f(10) i2=1000/(10*10) i2=10 50 【正确答案】 静态联编或静态绑定 动态联编或动态绑定 【试题解析】 C+语言编译时多态性的机制是静态绑定,实现 C+语言运行时多态性的机制是动态绑定。