1、国家二级( C+)笔试模拟试卷 97及答案与解析 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)用 E-R图只能表示实体集之间一对多的联系 ( D)用 E-R图表示的概念数据模型只能转换为关系数据模型 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), ( D) for(; ); 16 关于 continue语句叙述不正确的是 ( A) continue语句用于循环体中,结束 循环 ( B) continue语句用于循环体中,它使执行流跳出循环体中尚未执行的语句,并进行下一循环判断 ( C) continue可以用于 if语句中 ( D) continue语句不能代替 break语句 17 以下定义数组中错误的是 ( A) int a10; ( B) int a220; ( C) int a20 ; ( D) int a ; 18 下面程序的执行结果是 #inc
5、lude“ iostream h“ void main( ) int * p, r; p=new in; * p=20; r=sizeof(* p); cout r end1; delete p; ( A)程序错误 ( B)内存为 20地址的大小 ( C) 20 ( D) 4 19 下面程序错误的语句是 #include“ iostream h“ void main( ) int A=0; int & B; B=A; cout B; cout A; ( A) ( B) ( C) ( D) 20 下列程序的输出结果是 #include“ iostream“ using namespace std
6、; int Max(int a, int b) if(a b) else return a; else retum b; void main( ) int m, n; m=10, n=5; int max=Max(m, n); cout max end ( A) 10 ( B)程序有误 ( C) 1 ( D) 0 21 函数 int test(int a, int b=1, int c: 0),下列调用不合法的个数是 test(0); test(0, 0); test( ); test(0, 0, 0); ( A) 0 ( B) 1 ( C) 2 ( D) 3 22 C+语言中类定义中默认的访
7、问权限是 ( A) public ( B) protected ( C) pfivate ( D) default 23 C+语言中关于构造函数的说法正确的是 ( A)构造函数的函数名不必和类名相同 ( B)构造函数只能每一个 ( C)每个类必定有构造函数 ( D)构造函数必有返回值 24 关于构造函数 A( )的拷贝构造函数正确的是 ( A) A(A * B); ( B) A(A B); ( C) A(A & B) ( D) A(A); 25 下面程序的执行结果为 #include“ iostream“ using namespace std; class A int a; public:
8、void Seta(int x) a=x; void Display_a( ) cout a end1; ; class B int b; public: void Setb(int x) b=x; void D ( A)输出为 2 2 3 ( B)有错误在第 5行 ( C)输出为 1 2 3 ( D)有错误在第 7行 26 虚函数必须是类的 ( A) 成员函数 ( B)友元函数 ( C)构造函数 ( D)析构函数 27 多态性指的是 ( A)以任何方式调用一个虚函数 ( B)以任何方式调用一个纯虚函数 ( C)借助于指向对象的基类指针或引用调用一个虚函数 ( D)借助于指向对象的基类指针或引
9、用调用一个纯虚函数 28 不能重载的运算符是 ( A) new ( B) sizeof ( C) * ( D) + 29 只能作为成员函数重载的是 ( 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
10、下面程序的结果为 #include“ iostream h“ void change(int a, int b) int temp; temp=a; a=b; b=temp; void main( ) int m, n; m=8; n=9; change(m, n); tout m “ “ n end1; ( 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
11、)为空字符 34 下面程序输出的结果为 #include“ iostream h“ class A public: A( ) cout “CLASS A“ end1; A( ) ; class B: public A public: B( ) cout “CLASS B“ end1; B( ) ; void main( ) A * p; p=new B; B * q; ( 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
12、B CLASS B 35 C+语言函数中不能由系统自动生成的是 ( A)析构函数 ( B)构造函数 ( C) 内联函数 ( D)拷贝构造函数 36 常用的黑箱测试有等价分类法、【 】、因果图法和错误推测法 4种。 37 测试的目的是暴露错误,评价程序的可靠性;而【 】的目的是发现错误的位置并改正错误。 38 软件维护活动包括以下几类:改正性维护、适应性维护、【 】维护和预防性维护。 39 在面向对象的设计中,用来请求对象执行某一处理或回答某些信息的要求称为【 】。 40 关键字 ASC和 DESC分别表示【 】的含义。 41 C+语言中关键字运算符有 new, delete和【 】。 42 将
13、以下程序写成三目运算表达式是 【 】 。 if(aB) max=a; else max=b; 43 以下程序的输出结果是 【 】 。 #include iostream.h class object private: int val; public: object( ); object(int i); object( ); ; object:object( ) val=0; c 44 请定义一个函数名为 A,返回值为 int,没有参数的纯虚函数的定义是【 】。 45 表达式 x.operator+(y.operator+(0)还可以写成【 】。 46 假设 fin是一个文件流对象,则关闭文件的
14、语句是【 】。 47 下面程序的功能是将字符数组 a中下标值为偶数的元素从小到大排列,其他元素不变,请填空。 #include iostream.h #include string.h void main( ) char a =“clanguage“, t; int i, j, k; k=strlen(a) ; for(i=0; i =k-2; i+=2) for(j=i+2; j =k; 【 】 = if ( 【 】 ) t=ai; ai=aj; aj=t; cout a; cout end1; = 48 静态成员函数可以直接访问类的【 】成员,不能直接访问类的【 】成员。 国家二级( C+
15、)笔试模拟试卷 97答案与解析 1 【正确答案】 B 【试题解析】 栈是限定在一端进行插入与删除的线性表。在栈中,允许插入与删除的一端称为栈顶,而不允许插入与删除的另一端称为栈底。栈顶元素总是最后被插入的元素,从而也是最先能被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素,即栈是按照 “先进后出 ”或 “后进先出 ”的原则组织数据的。注意:队列组织数据的原则是 “先进先出 ”或 “后进后出 ”。注意:数据结构中,栈和队列组织数据的原则。 2 【正确答案】 D 【试题解析】 具有 3个结点的二叉树具有以下的几种形态:注意:二叉树的结构及画法。 3 【正确答案】 B 【试题
16、解析】 所谓二叉树的前序遍历 (DLR)是指在访问根结点、遍历左子树与遍历右子树这 3者中,首先访问根结点,然后遍历左子树,最后遍历右子树,并且,在遍历左右子树时,上述规则同样适用,即 “根 -左 -右 ”。故该二叉树的前序遍历结果为 “ATBZXCYP”。注意:对于本题,若使用后序遍历和中序遍历的结果分别为 “ZBTYCPXA”和 “TZBACYXP”。 4 【正确答案】 D 【试题解析】 注意:结构化的程序设计的目的。 5 【正确答案】 B 【试题解析】 采用结构 化程序设计方法编写程序,可使程序结构良好、易读、易理解、易维护,它包括 3种基本控制结构,分别是顺序结构、选择结构和重复结构
17、(又称循环结构 )。注意:控制程序结构的方法和作用。 6 【正确答案】 C 【试题解析】 软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定。它有 3个方面的重要特征,即测试的挑剔性、完全测试的不可能性及测试的经济性。其中没有测试的可靠性这一说法。注意:软件测试与软件调试的概念,以及相应的方法。 7 【正确答案】 A 【试题解析】 需求分 析是软件定义时期的最后一个阶段,它的基本任务就是准确回答 “系统必须做什么 ”这个问题即软件系统功能,需求分析的任务还不是确定系统怎样完成它的工作,而仅仅是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体
18、的要求。 8 【正确答案】 B 【试题解析】 关系代数中包括传统的集合运算和专门的关系运算。经过选择或投影运算得到的新关系的属性个数最多不会超过原关系中的属性个数。经过连接运算得到的新关系最多不少于原关系中属性的个数。 9 【正确答案】 C 【试题解析】 两个实体之间的联 系实际上是实体集间的函数关系,这种函数关系可以有下面几种,即一对一的联系、一对多 (或多对一 )的联系和多对多的联系;概念模型便于向各种模型转换。由于概念模型不依赖于具体的数据库管理系统,因此,容易向关系模型、网状模型和层次模型等各种模型转换。 10 【正确答案】 C 【试题解析】 数据库的完整性是指数据的正确性和相容性 (
19、如学生的学号必须惟一,性别只能是女或男等 ),数据库是否具备完整性关系到数据库系统能否真实反映现实世界,因此维护数据库的完整性是非常重要的。注意:数据库的各种特性及表达形式。 11 【正确答案】 D 【试题解析】 面向对象语言的基本特性是封装,继承和多态。注意:垃圾回收是Java的主要特点。注意:要掌握面向对象的优点。 12 【正确答案】 A 【试题解析】 在 C+语言中,标识符只能由数字,字母,下划线组成,并且第一个字符不能是数字。注意:选项 A)是以数字开始的。注意:关键字不能用作标识符。 13 【正确答案】 A 【试题解析】 运算符的优先级是:最高,其次是【 】, ( ),等,然后是 +
20、, -,再低还有 - * , * , +, =。注意:逗 号的优先级最低。 14 【正确答案】 C 【试题解析】 理解宏定义, sum(a, b)o * b 中 a为 1+2, b为 3,故 sum(1+2,3): 1+2 * 3,即宏定义的替换过程是原样替换。 注意:选项 B)的计算方法足 (1+2) * 3=9是错误的,注意,不要随意的加括号。注意:宏定义与函数的区别。 15 【正确答案】 A 【试题解析】 for循环的一般格式为 for(初始化部分;终止条件判断部分;迭代部分 ) 循环体; 说明如下: for循环开始时,首先执行初始化操作,然后判断终止条件是否 满足,如果满足,则执行循环
21、体中的语句,最后执行迭代部分。完成一次循环后,重新判断终止条件。注意:在 for语句中,如果省略了终止条件判断部分,并且在语句中没有 break,或者是终止条件判断部分始终没有终止,都将出现死循环。注意:for循环语句可由 while循环语句来代替。 16 【正确答案】 A 【试题解析】 continue是跳出了本次循环中尚未执行的语句,重新执行循环,但没有终止循环。注意:注意 break, continue和 goto语句的用法和区别。 17 【正确答案】 C 【试题解析 】 二维数面的二维不能省略。注意:数组的下标是从零开始的。 18 【正确答案】 D 【试题解析】 理解 sizeof 的
22、用法,它可以运算出各种数据类型所占内存空间的多少。注意:选项 C)中是指针 p 所指向的内存地址中内容是 20。注意:在用完申请后的内存应立刻释放。 19 【正确答案】 C 【试题解析】 引用必须在第一时间进行赋值, int & B 没有在第一时间赋值故错误。注意:引用的方式,引用和指针应用的比较。 20 【正确答案】 A 【试题解析】 本题函数 Max的功能是求出两个整数中的 较大者,并且通 return语句返回。注意: retum语句的用法,注意 return的条件。 21 【正确答案】 C 【试题解析】 如果一个函数中有多个参数,则默认参数应从右到左逐个定义。注意:选项 C)没有给 a传
23、递任何的参数,所以是错误的。注意:函数含有默认参数时的调用方式。 22 【正确答案】 C 【试题解析】 lC+语言中类定义中默认的类的访问权限是 private。注意: C+语言中没有 default 权限。注意:结构体默认的访问权限是 public,注意它们之间的区别。 23 【正 确答案】 C 【试题解析】 构造函数的函数名必须和类名相同;构造函数可以有一个,也可以有多个;构造函数没有返回值。注意:构造函数可以被重载。 24 【正确答案】 C 【试题解析】 固定的一种拷贝方式就是 : const&注意:如果一个类中没有声明,拷贝构造函数,编译器会自动生成一个如上述形成的仅有的拷贝构造函数。
24、 25 【正确答案】 D 【试题解析】 pnvate继承不能调用 Display_b 函数, public继承可以调用基类中非 pfivate成员 。注意:类的继承方式 public, protected 和 private 的区别。 26 【正确答案】 A 【试题解析】 虚函数只能是类的成员函数,不能是构造函数或析构函数。注意:虚函数可以是另一个类的友元函数。 27 【正确答案】 C 【试题解析】 多态性主要是指借助于指向对象的基类指针或引用调用一个虚函数。注意:注意多态和重载的关系和应用。 28 【正确答案】 C 【试题解析】 C+语言规定 * 运算符是不能被重载的。注意:还有, * ,:
25、, ?:这几个运算符不能重载。 29 【正确答案】 A 【试题解析】 C+语言规定 “=”运算符只能作为成员函数重载。 30 【正确答案】 B 【试题解析】 类模板可以有虚拟类型参数。注意:模板及其周边概念和模板的实现。 31 【正确答案】 D 【试题解析】 setprecision( )函数为设置小数位数。注意: C+中 I/o流各种函数的使用例如: setw( ), settill( )。 32 【正确答案】 A 【试题解析】 两数只在函数 change内被使用,函数调用完后该内存被释放,因此没有交换两 数。注意:交换两个数的方法简单说有两种一是使用指针,二是用引用。 33 【正确答案】
26、D 【试题解析】 0输出为不显示,只代表一个字符串的结束。注意: C+语言中各种字符转义序列的意义和应用。 34 【正确答案】 C 【试题解析】 每实例化一个类就要调用其构造函数,结束运行该实例后调用析构函数。注意:类的实例化和构造函数、析构函数的调用方式和何时调用。 35 【正确答案】 C 【试题解析】 一个类中由系统自动生成的函数有构造函数,析构函数,拷贝构造函数。注意:内联函数只能 由用户自己定义。注意:类能自动生成的函数,尤其注意构造函数和析构函数,还有拷贝构造函数。 36 【正确答案】 边值分析法 【试题解析】 黑箱测试方法完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测
27、试用例。常用的黑箱测试有等价分类法、边值分析法、因果图法和错误推测法 4种。 37 【正确答案】 调试 【试题解析】 软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定;调试也称排错,它是一个与测试有联系又有区别的概念。具体来说,测试的目的是暴露错误, 评价程序的可靠性,而调试的目的是发现错误的位置,并改正错误。 38 【正确答案】 完善性 【试题解析】 软件维护活动包括以下几类:改正性维护、适应性维护、完善性维护和预防性维护。改正性维护是指在软件交付使用后,为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,应当进行的诊断和改正错误的过程;适应
28、性维护是指为了使软件适应变化,而去修改软件的过程;完善性维护是指为了满足用户对软件提出的新功能与性能要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性 ;预防性维护是为了提高软件的可维护性、可靠性等,为以后的进一步改进软件打下良好基础。 39 【正确答案】 消息 【试题解析】 在面向对象技术中,主要用到对象 (object)、类 (class)、方法(method)、消息 (message)、继承 (inheritance)、封装 (encapsulation)等基本概念。其中消息是用来请求对象执行某一处理或回答某些信息的要求。 40 【正确答案】 升序
29、排列和降序排列 【试题解析】 ASC表示升序排列, DESC表示降序排列,多用在索引定义和SELECT语句中的 ORDER子句中。 41 【正确答案】 sizeof 【试题解析】 C+语言中关键字运算符有 3个分别 new, delete和 sizeof。 new是申请内存, delete是释放内存, sizeof 是求字节数。 42 【正确答案】 max=(a B?a: b; 【试题解析】 条件运算符要求有三个操作对象,称三目 (元 )运算符,它是 C+语言中惟一的一个三目运算符。条件表达式的一般形式为:表达式 1?表达式 2:表达式 3。所以我们可以写成 (a B?a: b,它是一个 “条
30、件表达式 ”。执行 顺序是如果(a B 条件为真,则条件表达式取值 a作为整个表达式的值,否则取值 b 作为整个表达式的值。 43 【正确答案】 Constructor for object6 Constructor for obiect5 Constructor for container Destructor for container Destructor for object5 Destructor for obiect6 【试题解析】 C+语言中的构造函数和析构函数分别是在声明对象时和对象调用完毕后调用,本题中的 调用就是这样成对出现的。 44 【正确答案】 virtual int
31、A()=0; 【试题解析】 C+语言中的纯虚函数是一种特殊的函数,它没有自己的定义,只有声明,纯虚函数与虚函数声明的不同就在于在函数后面加上了 “=0”。 45 【正确答案】 x+y+或 x+(y+) 【试题解析】 因为 y.operator+(0)是对成员 y重载运算符,所以是成员重载,在参数表中又有一个参数,是重载后缀 +,即是 x+(y+)。 46 【正确答案】 fin 【试题解析】 如果程序没有用 close()主动关闭文件,则在文件流对象退出作用域时,被调用的析构函数会关闭对象所联系的文件。但应及时关闭,以便尽早释放占用的系统资源并将文件置于更安全的状态。 47 【正确答案】 j+=2 ai =aj或 ai aj 【试题解析】 strlen 函数是测试字符串长度的函数,函数的值为字符串中的实际长度,不包括 0在内。 48 【正确答案】 静态 非静态 【试题解析】 静态成员函数可以直接访问该类中的静态数据成员,而不能访问该类中的非静态数据成员。