1、国家二级( C+)笔试模拟试卷 157及答案与解析 1 下列数据结构中,按先进后出原则组织数据的是 ( A)线性链表 ( B)栈 ( C)循环链表 ( D)顺序表 2 若某二叉树的前序遍历访问顺序是 abdgcefh,中序遍历访问顺序是 dgbaechf,则其后序遍历的结点访问顺序是 ( A) bdgcefha ( B) gdbecfha ( C) bdgaechf ( D) gdbehfca 3 线性表 L=(a1,a2,a3,ai,an) ,下列说法正确的是 ( A)每个元素都有一个直接前件和直接后件 ( B)线性表中至少要有一个元素 ( C)表中诸元素的排列顺序必须是由小到大或由大到小
2、( D)除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件 4 在设计程序时,应采纳的原则之一是 ( A)不限制 goto语句的使用 ( B)减少或取消注解行 ( C)程序越短越好 ( D)程序结构应有助于读者理解 5 模块独立性是软件模块化所提出的要求,衡量模块独立性的度量标准则是模块的 ( A)抽象和信息隐蔽 ( B)局部化和封装化 ( C)内聚性和耦合性 ( D)激活机制和控制方法 6 下列叙述中,不属于测试的特征的是 ( A)测试的挑剔性 ( B)完全测试的不可能性 ( C)测试的可靠性 ( D)测试的经济性 7 数据处理的最小单位是 ( A)数据 ( B)
3、数据元素 ( C)数据项 ( D)数据结构 8 分布式数据库系统不具有的特点是 ( A)数据分布性和逻辑整体性 ( B)位置透明性和复制透明性 ( C)分布性 ( D)数据冗余 9 将 E-R图转换到关系模式时,实体与联系都可以表示成 ( A)属性 ( B)关系 ( C)键 ( D)域 10 实体是信息世界中广泛 使用的一个术语,它用于表示 ( A)有生命的事物 ( B)无生命的事物 ( C)实际存在的事物 ( D)一切事物 11 下面关于虚函数的描述中正确的是 ( A)虚函数是一个静态成员函数 ( B)虚函数是一个非成员函数 ( C)虚函数可以在函数说明时定义,也可以在函数实现时定义 ( D
4、)派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型 12 C+语言中函数返回值的类型决定于 ( A) return语句中的表达式类型 ( B)调用函数的主调函数类型 ( C)调用、函数时临时类型 ( D)定义函 数时所指定的函数类型 13 判断字符型变量 ch是否为大写英文字母,应使用表达式 ( A) ch =Ay=0;(y!=123)x+); ( A)是无限循环 ( B)循环次数不定 ( C)最多执行 4次 ( D)最多执行 3次 17 若有说明: int a34;则对 a数组元素的非法引用是 ( A) a02*1 ( B) a13 ( C) a4-20 ( D) a04 18 设
5、 a和 b均为 double型变量,且 a=5.5、 b=2.5,则表达式 (int)a+b/b的值是 ( A) 6.500000 ( B) 6 ( C) 5.500000 ( D) 6.000000 19 下面赋值语句中正确的是 ( A) a=7+b+c=a+7; ( B) a=7+b+=a+7; ( C) a=7+b,b+,a+7; ( D) a=7+b,C=a+7; 20 语句 cout (a=2)int y) 22 下列关于指针的操作中,错误的是 ( A)两个同类型的指针可以进行比较运算 ( B)可以用一个空指针赋给某个指针 ( C)一个指针可以加上两个整数之差 ( D)两个同类型的指
6、针可以相加 23 若有以下定义: int a=1,2,3,4,5,6,7); char c1=b,c2=2; 则数值不为 2的表达式是 ( A) a1 ( B) d-c1 ( C) a3-c2 ( D) c2-0 24 静态成员函数没有 ( A)返回值 ( B) this指针 ( C)指针参数 ( D)返回类型 25 以下程序的输出结果为 main( ) int m=7,n=4; float a=38.4,b=6.4,x; x=m/2+n*a/b+1/2; cout x endl; ( A) 27.000000 ( B) 27.500000 ( C) 28.000000 ( D) 28.500
7、000 26 执行下列语句后, 输出结果为 cout.put(s); cout c a; ( A) ca ( B) sea ( C) s ( D) a 27 下列运算符中,不能重载的是 ( A) ?: ( B) + ( C) - ( D) = 28 所有在函数中定义的变量及函数的形式参数,都属于 ( A)全局变量 ( B)局部变量 ( C)静态变量 ( D)常量 29 为引入对象的同义词,对象的别名称为 ( A)指针 ( B)引用 ( C)枚举 ( D)结构 30 以下不属于构造函数特征的是 ( A)构造函数 名与类名相同 ( B)构造函数可以重载 ( C)构造函数可以设置默认参数 ( D)构
8、造函数必须指定函数类型 31 以下关于虚函数的叙述中不正确的是 ( A)虚函数属于成员函数 ( B)虚函数不允许说明成静态的 ( C)凡是虚函数必须用 virtual说明 ( D)虚函数可以被继承 32 类的构造函数的作用是 ( A)一般成员函数 ( B)类的初始化 ( C)对象的初始化 ( D)删除对象创建的所有对象 33 继承机制的作用是 ( A)信息隐藏 ( B)数据封装 ( C)定义新类 ( D)数据抽象 34 关于虚函数的描述中正确的是 ( A)虚函数是一个静态成员函数 ( B)虚函数是一个非成员函数 ( C)虚函数既可以在函数说明时定义,也可以在函数实现时定义 ( D)派生类的虚函
9、数与基类中对应的虚函数具有相同的参数个数和类型 35 下列表示纯虚函数的成员函数是 ( A) virtual int func (int); ( B) void func(int)=0; ( C) virtual void func=0; ( D) virtual void flmc(int) 36 在算法正确的前提下, 评价一个算法的两个标准是 _。 37 将 代数式转换成程序设计中的表达式为 _。 38 软件危机出现于 20世纪 60年代末,为了解决软件危机,人们提出了 _的原理来设计软件,这就是软件工程诞生的基础。 39 _是数据库设计的核心。 40 在关系模型中,把数据看成一个二维表,
10、每一个二维表称为一个 _。 41 在 C语言的面向对象程序设计框架中, _是程序的基本组成单元。 42 C语言程序的注释可以出现在程序中的任何地方,一个注释以 _作为开始和结束的标记。 43 以下程序的输出结果是 _。 #include iostream.h void fun( ) static int a 0; a 2; cout a “ “; void main( ) int cc; for(cc 1;cc 4;cc ) fun( ) ; cout endl; 44 用以下语句调用库函数 malloc,使字 符指针 st指向具有 11个字节的动态存储空间,请填空。 st (char * )
11、 _ ; 45 以下程序的输出结果是 _。 #include iostream.h unsigned fun(unsigned num) unsigned k 1; dok * num%10;num/ 10;while(num) ; return k; void main( ) unsigned n 26; cout fun(n) endl; 46 将 x y * z中的 “ ”用成员函数重载, “ * “用友元函数重载应写为 _。 47 下面程序的功能是将字符数组 a中下标值为偶数的元素从小到大排列,其他元素不变,请填空。 #include iostream.h #include strin
12、g.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 endl; 48 静态成员函数可以直接访问类的 _成员,不能直接访问类的 _成员。 国家二级( C+)笔试模拟试卷 157答案与解析 1 【正确答案】 B 【试题解析】 栈是限定在一端 进行插入与删除的线性表。在栈中,允许插入与删除的一端称为栈顶,而不允许插入与删除的另一端称为栈底。栈顶元素总是最后被插入的元素,从
13、而也是最先能被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素,即栈是按照 “先进后出 “或 “后进先出 “的原则组织数据的。 2 【正确答案】 D 【试题解析】 前序遍历的第一个结点 a为树的根结点;中序遍历中 a的左边的结点为 a的左子树, a右边的结点为 a的右子树;再分别对 a的左右子树进行上述两步处理,直到每个结点都找到正确的位置。 3 【正确答案】 D 【试题解析】 线性表可以为空表;第一个元素没有直接前件,最后一个元素没有直接后件;线性表的定义中,元素的排列并没有规定大小顺序。 4 【正确答案】 D 【试题解析】 滥用 goto语句将使程序流程无规律,可读性
14、差,因此 A不选;注解行有利于对程序的理解,不应减少或取消, B也不选;程序的长短要依照实际情况而论,而不是越短越好, C也不选。 5 【正确答案】 C 【试题解析】 模块的独立程序是评价设计好坏的重要度量标准。衡量软件的模块独立性使用耦合性和内聚性这两个定性的度量标准。 6 【正确答案】 C 【试题解析】 软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定。它有 3个方面的重要特征,即测试的挑剔性、完全测试的不可能性及测试的经济性。其中没有测试的可靠性这一说法。 7 【正确答案】 C 【试题解析】 数据处理的最小单位是数据项;由若干数据项组成数据元素;而数据
15、是指能够被计算机识别、存储和加工处理的信息载体;数据结构是指数据之间的相互关系和数据运算。故正确答案为选项 C。 8 【正确答案】 D 【试题解析】 分布式数据库 系统具有数据分布性、逻辑整体性、位置透明性和复制透明性的特点,其数据也是分布的;但分布式数据库系统中数据经常重复存储。数据也并非必须重复存储,主要视数据的分配模式而定。若分配模式是一对多,即一个片段分配到多个场地存放,则是冗余的数据库,否则是非冗余的数据库。 9 【正确答案】 B 【试题解析】 数据库逻辑设计的主要工作是将 E-R图转换成指定 RDBMS中的关系模式。首先,从 E-R图到关系模式的转换是比较直接的,实体与联系都可以表
16、示成关系, E-R图中属性也可以转换成关系的属性。实体集也可以转换成关系。 10 【正确答案】 C 【试题解析】 实体是客观存在且可以相互区别的事物。实体可以是具体的对象,如一个学生,也可以是一个抽象的事件,如一次出门旅游等。因此,实体既可以是有生命的事物,也可以是无生命的事物,但它必须是客观存在的,而且可以相互区别。 11 【正确答案】 B 【试题解析】 本题考核虚函数的概念。虚函数是非静态的成员函数,它不能是友元函数,但可以在另一个类中被声明为友元函数。所以 A选项不正确;虚函数必须是类的成员函数,所以 B选项是错误的;虚函数声明只能出现在类定义的函数原型声明 中,而不能在成员函数的函数体
17、实现的地方,所以 C选项是不正确的;一般要求基类中说明了虚函数后,派生类说明的虚函数应该与基类中虚函数的参数个数相等,对应参数的类型相同。如果不相同,则将派生类虚函数的参数类型强制转换为基类中虚函数的参数类型。故 D选项的说法是正确的。 12 【正确答案】 D 【试题解析】 函数在定义时已经可以指定其函数类型,则函数返回值类型就是该类型。 13 【正确答案】 D 【试题解析】 本题考核 C+表达式类型及求值规则。 ch为大写字母的条件是大于等于 A且小于等于 Z。 14 【正确答案】 C 【试题解析】 本题其实是考查各级运算符的优先级的。选项 A赋值符号右侧为逗号表达式,其取值为最后一项表达式
18、的值;选项 B隐含表示为 j=j+1,这是很常用的一种赋值表达式。选项 D赋值符号右侧为逻辑表达式,其值为 1或 0,可以赋值给变量 x。将选项 C展开为 i+1=i+1+1,这是错误的。 15 【正确答案】 A 【试题解析】 本题很简单,不过考生要注意引用是 C+的新特性。只有结构是 C语言也有的特性。 16 【正确答案】 C 【试题解析】 本题考查 for循环条件 中三个表达式的执行顺序。首先执行表达式一,然后执行表达式二,如果表达式二为真,则循环体执行,然后执行表达式三,接着继续执行表达式二,如此循环。考生要注意的是,本题中表达式三中包含了变量 x的增量操作,因此可以由表达式二和三一起控
19、制循环体的执行次数。本题正确答案为 C。 17 【正确答案】 D 【试题解析】 在数组这部分的知识里面,数组下标越界是一个比较容易忽略的问题,其下标是从 0开始,至 n-1为止,因此选项 D是正确答案。 18 【正确答案】 D 【试题解析】 混合表达式的值的类型是由表达式中 具有最高精度的类型确定,因此可知选项 B可排除。注意 b/b的结果应是 1.00000,而 (int)a则为 5,相加的结果还是 double型,故正确答案应为 D。 19 【正确答案】 D 【试题解析】 赋值语句合法的重要标志之一就是赋值符号的左侧应该表示为一个变量,即可以在内存中存在一块空间用于存放赋值符号右侧的值。据
20、此,可以断定选项 A和 B可以排除。注意:选项 C中不是逗号表达式,要考虑优先级的问题。本题答案为 D。 20 【正确答案】 D 【试题解析】 很明显,本题考查的是表达式的值作为结果输出。可 以看出,本表达式是一个逻辑表达式,其结果为真或假,那么输出则对应 1和 0,故排除选项C。本题答案为 D。 21 【正确答案】 D 【试题解析】 函数声明时,可以指定其形参的默认值,不过要从右向左指定;可以省略形参名,仅以形参类型表示;形参表之间用逗号分割。因此,本题答案为D。 22 【正确答案】 D 【试题解析】 本题考查指针能够进行的运算方式。指针可以加减一个整数,两个指针可以相减,表示指针之间的元素
21、个数。指针相加则没有意义,因此本题答案为 D。 23 【正确答案】 D 【试题解析 】 本题考查数组的定义、初始化及其引用,以及对字符 ASCII码值的熟悉程度。解本题的关键在于熟悉字符的 ASCIII码值。字符在进行数学运算时取其 ASCII码值,其中 b的 ASCII码值为 98, d的 ASCII码值为 100,字符 2的 ASCII:码值为 50。根据以上知识,可知 D选项中表达式 c2-0的值为 50。 24 【正确答案】 B 【试题解析】 this指针是系统隐含的用于指向当前对象的指针。由于静态函数是同类中所以对象都共享的函数,在内存当中只存在一份,不属于某个对象所有,所以静态函数
22、 没有 this指针。 25 【正确答案】 A 【试题解析】 本题考查表达式值的类型由参与运算的所有变量的类型中优先级最高的变量类型所决定。不过要注意的是整型向 float型转换时,将丢失小数部分,即向下取值。 26 【正确答案】 B 【试题解析】 本题很简单,考查 cout对象的成员函数 put方法和操作符的使用方法。 27 【正确答案】 A 【试题解析】 :?是 C+中唯一一个三目运算符,不能被重载。 28 【正确答案】 B 【试题解析】 全局变量是在所有函数定义、类定 义和程序块之外声明的变量,局部变量是在某个函数定义、类定义或程序块之内声明的变量。用关键字 Static声明的局部变量称
23、为静态变量,故正确答案为 B项。 29 【正确答案】 B 【试题解析】 引用是 C+引入的一个新概念,表示变量或对象的别名。 30 【正确答案】 D 【试题解析】 类的构造函数不能指定函数类型,由系统采取默认的处理方式,不需要用户参与。 31 【正确答案】 C 【试题解析】 虚函数的引入是为了解决动态绑定问题,使类的实例表现出多态性,虚函数在继承后依然保持虚函数特 性,此时不需要用 virtual关键词修饰。 32 【正确答案】 C 【试题解析】 本题考查类的构造函数的作用,构造函数一般负责完成对象建立时的初始化工作,如资源的分配。 33 【正确答案】 C 【试题解析】 继承是类的一个重要特性
24、,没有继承,面向对象方法也就不存在。正是有了继承,才呈现出丰富多彩的类和对象。 34 【正确答案】 D 【试题解析】 虚函数不能定义为静态函数;虚函数的作用在于继承,表现出动态性。所以,在派生类中定义的虚函数必须和基类中对应的虚函数具有相同的参数个数和 类型。 35 【正确答案】 C 【试题解析】 本题考查纯虚函数的定义形式。由于纯虚函数在最后要有 “=0”,故据此排除 A和 D。而 B中没有出现 virtual关键词,故正确答案为 C。 36 【正确答案】 时间复杂度和空间复杂度 37 【正确答案】 SQRT(x2 y2) /(a b) 38 【正确答案】 软件工程学 39 【正确答案】 数
25、据模型 【试题解析】 数据模型是对客观事物及联系的数据描述,它反映了实体内部及实体与实体之间的联系。因此,数据模型是数据库设计的核心。 40 【正确答案】 关系 【试题解析】 在关系模型中,把数据看成一个二维表,每一个二维表称为一个关系。表中的每一列称为一个属性,相当于记录中的一个数据项,对属性的命名称为属性名 ;表中的一行称为一个元组,相当于汜录值。 41 【正确答案】 类 【试题解析】 C语言面向对象程序设计的基本组成单元是 class,面向过程的程序设计的基本组成单元是函数。 42 【正确答案】 /* */ 【试题解析】 C语言程序的注释可以出现在程序中的任何地方,一个注释以“/ *”开
26、始,以 “* /”结束 。 43 【正确答案】 2 4 6 【试题解析】 本题考查静态局部变量的使用。用关键字 static声明的局部变量为“静态局部变量 ”,其值在函数调用结束后不消失而保留原值,即其占用的存储单元不释放,在下一次调用该函数时,该变量已有值,就是上一次函数调用结束时的值。 44 【正确答案】 malloc(11) 或 malloc(sizeof(char) * 11) 【试题解析】 malloc函数的参数可以是一个具体的常数,也可以是一个表达式。在本题中,可以是 malloc(11) ,也可以借助于 sizeof运算符来表示。 45 【正确答案】 12 【试题解析】 函数有一
27、个形参 num,循环前变量 k置 1,循环中,表达式num%10是取 num的个位,将 Hum的个位值累乘于 k中,然后 num除以 10。循环直至 num为 0结束,这是逐一求出 num十进制表示的各位数字,并累乘于变量k的循环。函数最后返回 k。函数 fun的功能是求整数的各位十进制数的积。 46 【正确答案】 xoperator (operator * (y,z) 【试题解析】 C中用成员函数重载 x * y为 :x. operator * (y) ;用友元函数重载x * y为 :operator * (x,y) ;用成员函数重载 x y为 :x. operator (y) ;用友元函数重载 x y为 :operator (x,y) 。 47 【正确答案】 j 2 ai aj 或 ai aj 【试题解析】 strlen函数是测试字符串长度的函数,函数的值为字符串中的实际长度,不包括 0在内。 48 【正确答案】 静态;非静态 【试题解析】 静态成员函数可以直接访问该类中的静态数据成员,而不能 访问该类中的非静态数据成员。