1、国家二级( C+)笔试模拟试卷 155及答案与解析 1 为了培养良好的程序设计风格,下列描述中正确的是 ( A)程序应简单、清晰、可读性好 ( B)符号名的命名只要符合语法 ( C)充分考虑程序的执行效率 ( D)程序的注释可有可无 2 在最坏情况下,下列各排序方法的比较次数正确的是 ( A)冒泡排序为 n/2 ( B)冒泡排序为 n(n+1)/2 ( C)快速排序为 n/2 ( D)快速排序为 n(n-1)/2 3 按 “先进后出 ”原则组织数据的结构是 ( A)有序表 ( B)栈 ( C)队列 ( D)二 叉树 4 对下列二叉树进行中序遍历的结果是 ( A) ZBTYCPXA ( B) A
2、TBZXCYP ( C) TZBACYXP ( D) ATBZXCPY 5 下列叙述中正确的是 ( A)数据的逻辑结构与存储结构必定是一一对应的 ( B)由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构 ( C)程序设计语言中的数组一般是顺序存储结构,因此,利用数组只能处理线性结构 ( D)以上三种说法都不对 6 下列叙述中正确的是 ( A)接口复杂的模块,其耦合程度一定低 ( B)耦合程度弱的模 块,其内聚程度一定高 ( C)耦合程度弱的模块,其内聚程度一定低 ( D)上述三种说法都不对 7 在测试中,下列说法错误的是 ( A)测试是为了发现程序中的错误而执行程序的过
3、程 ( B)测试是为了表明程序的正确性 ( C)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案 ( D)成功的测试是发现了至今为止尚未发现的错误的测试 8 下列叙述中正确的是 ( A)实体集之间一对一的联系实际上就是一一对应的关系 ( B)关系模型只能处理实体集之间一对一的联系 ( C)关系模型属于格式化模型 ( D) 以上三种说法都不对 9 数据库概念设计中由分散到集中的设计方法是 ( A)视图设计 ( B)视图集成设计 ( C)集中式模式设计 ( D)分散式模式设计 10 下列叙述中正确的是 ( A)程序设计就是编制程序 ( B)程序的测试必须由程序员自己去完成 ( C)程序经调
4、试改错后还应进行再测试 ( D)程序经调试改错后不必进行再测试 11 面向对象程序设计思想的主要特征中不包括 ( A)继承性 ( B)功能分解,逐步求精 ( C)封装性和信息隐藏 ( D)多态性 12 C语言是以哪种语言为基 础逐渐发展演变而成的一种程序设计语言 ? ( A) ASP ( B) C ( C) VB ( D) Java 13 设变量 a是 int型, f是 double型, i是 float型,则表达式 10 a i * f值的数据类型是 ( A) int ( B) float ( C) double ( D)不确定 14 能正确表示逻辑关系 :“a10或 a0”的 C语言表达式
5、是 ( A) a 10 or a 0 ( B) a 0 | a 10 ( C) a 10 for(i 0;i 2;i ) x ; for(j 0;j 3;j ) if(j%2) continue; x ; x ; cout “X “ x; ( A) x 4 ( B) x 8 ( C) x 6 ( D) x 12 16 若执 行下面的程序时,从键盘上输入 5和 2,则输出结果是 #includeiostream.h void main( ) int a,b,k; cin a b; k a; if(a b) k a%b; else k b%a; cout k endl; ( A) 5 ( B) 3
6、 ( C) 2 ( D) 0 17 有以下程序 : #include string.h #include iostream.h void main( ) char * p “abcde0fghjik0“; cout strlen(p) ; 程序运行后的输出结果是 ( A) 12 ( B) 15 ( C) 6 ( D) 5 18 若有说明语句 : char a “It is mine“; char * p “It is mine“; 则以下不正确的叙述是 ( A) a 1表示的是字符 t的地址 ( B) p指向另外的字符串时,字符串的长度不受限制 ( C) p变量中存放的地址值可以改变 ( D)
7、 a中只能存放 10个字符 19 以下程序的运行结果是 #include iostream.h void sub(int x, int y, int * z) * z y x; void main( ) int a,b,c; sub(10,5, sub(7,a, sub(a,b, cout a “,“ b “,“ C endl; ( A) 5,2,3 ( B) 5, 12, 7 ( C) 5, 12, 17 ( D) 5, 2, 7 20 下列程序是用来判断数组中特定元素的位置所在,则输出结果为 #includeconio.h #include iostream.h int fun(int *
8、 s,int t,int * k) int i; *k 0; for(i 0;i t;i ) if(s * k si ) *k i; retum s * k ; void main( ) int a10 876,675,896,101,301,401,980,431,451,777,k; fun(a,10, cout k , ak ; ( A) 7,431 ( B) 6 ( C) 980 ( D) 6,980 21 执行下列程序段,结果是 #include iostream.h void main( ) int x 40; char y C; int n; n (x cout n; ( A)
9、0 ( B) 1 ( C) 2 ( D) 3 22 关于 this指针的说明不正确的是 ( A)不能在程序中修改 this指针 ( B) this指针可以给其他指针赋值,但不能修改 this指针 ( C)静态成员函数中没有 this指针 ( D) this指针可以被赋值 23 下面程序的输出结果是 #include iostream.h class A public: A( ) cout “construtA“ endl; VirtualA( ) cout “destructA“ endl; class B: public A ; class C:public A ; class D:publ
10、ic B,public C ; void main( ) D d; ( A) constructA ( B) constructA ( C) constructA ( D) constructA destructA constructA constructA constructA destructA constructA constrnctA destructA destructA constructA destructA destructA destructA destrctA destructA destructA 24 关于虚函数,下面说的正确的是 ( A)若在重定义虚函数时使用了 vi
11、rtual,则该重定义函数还是虚函数 ( B)虚函数不能声明为友元 ( C)子类必须重定义父类的虚函数 ( D)虚函数不能是 static的 25 如果在表达式 x/y中,是作为友元函数重载的, /是作为成员函数重载的,则该表达式还可为 ( A) (operator (x) ) .operator/(y) ( B) (operator (0) ) .operator/(y) ( C) operator/(operator (x,0) ) ,y) ( D) operator/(operator (0) ) ,y) 26 要想使 23.78965421的输出为 23.7887,应用的语句是 ( A
12、) cout 23.78965421; ( B) cout fixed 23.78965421; ( C) cout 23.78965421 0.001; ( D) cout fixed 23.78965421 0.001; 27 有以下语句,则对 a数组元素的引用不正确的是 (0i9) int a10 0,1,2,3,4,5,6,7,8,9, * p a; ( A) ap a ( B) * ( void main( ) int a 2,b 5,c 8; cout fun(int) fun(a c, b) ,a c) ; 程序运行后的输出结果是 ( A)编译出错 ( B) 9 ( C) 21
13、( D) 9.0 29 下列程序的运行结果是 #inClUde iostream.h class Location private: int X,Y; pubhc: void init(int 0,int 0) ; void valueX(int val) X val; int valueX( ) retum X; void valueY(int val) Y val; int valueY( ) retum Y;void Location: :init(int initX,int initY) X initX; Y initY; Void main( ) Location A,B; A. i
14、nit( ) ; A. valueX(5) ; cout A. valueX( ) endl A. valueY( ) endl; B. init(6,2) ; B. valueY(4) ; cout B. valueX( ) endl B. valueY( ) endl; ( A) 5 ( B) 0 ( C) 5 ( D) 0 0 0 0 0 6 6 6 6 4 4 2 2 30 在 C语言中,封装是借助于什么达到的 ? ( A)结构 ( B)类 ( C)数组 ( D)函数 31 在位运算中, 操作数每左移一位,其结果相当于 ( A)操作数乘以 2 ( B)操作数除以 2 ( C)操作数除以
15、 4 ( D)操作数乘以 4 32 有如下程序 : #inClude iostream.h #dehne N 2 #dehne M N 1 #denne NUM 2 * M 1 Void main( ) int i; for(i 1;i NUM;i ) cout i; 该程序中的 fof循环执行的次数是 ( A) 5 ( B) 6 ( C) 7 ( D) 8 33 下列程序的输出结果是 #include iostream.h int b 2; int func(int * a) b * a; return(b) ; void main( ) int a 2, res 2; res func(
16、cout res; ( A) 4 ( B) 6 ( C) 8 ( D) 10 34 所有在函数中定义的变量,连同形式参数,都属于 ( A)全局变量 ( B) 局部变量 ( C)静态变量 ( D)寄存器变量 35 有如下程序 : #include iostream.h long fib(int n) if(n 2) return(fib(n 1) fib(n 2) ) ; else return(2) ; void main( ) cout nb(3) ; 该程序的输出结果是 ( A) 2 ( B) 4 ( C) 6 ( D) 8 36 在树形结构中,树根节点没有 _。 37 Jackson结构
17、化程序设计方法是英国的 M.Jackson提出的,它是一种面向 _的设计方法。 38 在面向对象的模型中,最基本的概念是对象和 _。 39 软件设计模块化的目的是 _。 40 数据模型按不同应用层次分成 3种类型,它们是概念数据模型、 _和物理数据模型。 41 C中封装性、继承性和 _是面向对象思想的主要特征。 42 下面程序的结果为 _。 #include iostream.h void main( ) int a 1,b 2; bool c 1; if(a b) | | c) cout “tree“ endl; else cout “false“ endl; 43 下列 for语句的循环次
18、数为 _。 for(int a 0,b 1;ba ) ; 44 下面程序的输出结果是 _。 #include iostream.h void main( ) int a6 1,2,3,4,5,6; for(int i 0;i 5;i ) cout ai “ “; cout endl; 45 C程序是从 _函数开始执行的。 46 假定 A为一个类,则语句 A(A 为该类 _函数的原型说明。 47 类模板不同于函数模板,类模板只可用 _型参数。 48 下列程序的执行结果为 _。 #include iostream.h void main( ) cout.fill(*) ; cout.width(1
19、0) ; cout “hello“ endl; 49 下列程序在构造函数和析构函数中申请和释放类的数据成员 int * a,申请时使用形参 b初始化 a,请填空。 class A public: A(int b) ; A( ) ; private: int * a; ; A: :A(int b) _; A: : A( ) _; 50 C语言中的多态性是在编译时通过 _和模板体现的,在运行时是通过_体现的。 国家二级( C+)笔试模拟试卷 155答案与解析 1 【正确答案】 A 【试题解析】 良好的程序设计风格主要包括设计的风格、语言运用的风格、程序文本的风格和输入输出的风格。程序设计的风格应该
20、强调简单和清晰,程序必须是可以理解的,强调 “清晰第一,效率第二 ”。符号名的命名不仅要符合语法,而且符号 名的命名应具有一定实际含义,以便于对程序功能的理解。因此,选项 B中的说法是错误的。由于程序设计的风格强调的是 “清晰第一,效率第二 ”,而不是效率第一。因此,选项 C中的说法也是错误的。程序中的注释部分虽然不是程序的功能,计算机在执行程序时也不会执行它,但不能错误地认为注释是可有可无的部分。在程序中加入正确的注释能够帮助读者理解程序,注释是提高程序可读性的重要手段。因此,选项 D中的说法也是错误的。 2 【正确答案】 D 【试题解析】 在最坏情况下,冒泡排序的比较次数为 n(n-1)/
21、2,快速排序的比较次数 也为 n(n-1)/2。 3 【正确答案】 B 【试题解析】 栈是按 “先进后出 ”原则组织数据的结构;队列是按 “先进先出 ”原则组织数据的结构;而有序表与二叉树均不是。 4 【正确答案】 C 【试题解析】 按照二叉树中序遍历的方法:在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后访问根结点,最后遍历右子树;并且,在遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。对本题中的二叉树进行中序遍历的结果应是 TZBACYXP。 5 【正确答案】 D 【试题 解析】 一般来说,一种数据的逻辑结构根据需要可以表示成多种存储结构,因此,数据的
22、逻辑结构与存储结构不一定是一一对应的。选项 A中的说法是错误的。虽然计算机的存储空间是向量式的存储结构,但由于一种数据的逻辑结构根据需要可以表示成多种存储结构,例如,线性链表是线性表的链式存储结构。一般来说,在线性表的链式存储结构中,各数据结点的存储序号是不连续的,并且各结点在存储空间中的位置关系与逻辑关系也不一致。在线性链表中,各数据元素之间的前后件关系是由各结点的指针域来指示的。因此,数据的存储结构不一定是线性结构。选项 B中的 说法也是错误的。虽然程序设计语言中的数组一般是顺序存储结构,但是,利用数组也能处理非线性结构。例如,满二叉树与完全二叉树是非线性结构,实际上也是利用了程序设计语言
23、中的数组来处理二叉树这样的非线性结构。选项 C中的说法也是错误的。 6 【正确答案】 B 【试题解析】 影响模块之间耦合的主要因素有两个:一是模块之间的连接形式,二是模块接口的复杂性。一般来说,接口复杂的模块,其耦合程度要比接口简单的模块强。因此,选项 A中的说法是错误的。耦合和内聚是一个问题的两个方面,耦合程度弱的模块,其内聚程度一定高。因 此,选项 C和 D中的说法也是错误的;选项 B中的说法是正确的。 7 【正确答案】 B 【试题解析】 正确认识测试的目标十分重要,测试目标决定了测试方案的设计。如果为了表明程序的正确性而进行测试,就会设计一些不易暴露错误的测试方案;相反,如果测试是为了发
24、现程序中的错误,就会力求设计出最能暴露错误的测试方案。 8 【正确答案】 D 【试题解析】 实体集之间一对一的联系不一定是一一对应的关系。例如,在一个教室中,实体集 “学生 ”与实体集 “座位 ”之间是一对一的联系。因为实体集 “学生 ”中的每一个学生最多 与实体集 “座位 ”中的一个座位有联系 (学生坐在该座位上 );并且,实体集 “座位 ”中的每一个座位也最多与实体集 “学生 ”中的一个学生有联系 (座位上坐着该学生 )。但该教室中的学生与座位之间不一定是一一对应的关系,因为有可能某些座位是空的,没有学生去坐。因此,选项 A中的说法是错误的。在关系模型中,由于使用表格数据来表示实体之间的联
25、系,因此,可以直接描述多对多的实体联系。因此,选项 B中的说法也是错误的。关系模型是与格式化模型完全不同的数据模型,它与层次模型、网状模型相比有着本质的区别。关系模型是用表格数据来表示实体本身及 其相互之间的联系,它是建立在数学理论基础上的。因此,选项 C中的说法也是错误的。 9 【正确答案】 B 【试题解析】 数据库概念设计中由分散到集中的设计方法是视图集成设计方法,它的设计过程复杂但它能较好地反映需求,适合于大型与复杂的单位,避免设计的粗糙与不周到,目前此种方法使用较多。 10 【正确答案】 C 【试题解析】 程序设计并不单指编程,还有很多步骤,编程只是其中的一步,选项 A是错误的;程序测
26、试工作应避免由程序员自己去完成,选项 B也是错误的;程序经调试改错后还应进行再测试,选项 C是正 确的,选项 D是错误的。 11 【正确答案】 B 【试题解析】 面向对象程序设计的主要特征是继承性、封装性和信息隐藏、多态性。 12 【正确答案】 B 【试题解析】 C语言是对 C语言进行了扩充,继承了它的语法,并增加了面向对象的设计方法。 13 【正确答案】 C 【试题解析】 根据混合运算规则,如果有一个数据是 double型,则其他数据类型先转化为 double型,运算的结果最终也是 double型。为保证精度的不丢失,表达式的数据类型是变量和常量中精确度最高的变量类型。 14 【正确答案】
27、D 【试题解析】 逻辑运算符 “ | | ”表示或的意思。 15 【正确答案】 B 【试题解析】 该题是一个 for循环嵌套语句。第一层 for循环循环 2次,第二层循环 3次,但当 j等于 0和 1时,将执行 continue语句,不执行 x运算,所以每次执行完内循环后, x的增量为 1。最后一个 x运算将每次累加起来就是 x的值。 16 【正确答案】 C 【试题解析】 本题考查简单的 ifelse 语句。先执行条件 if(a b) ,显然不成立,则执行 else语句。 17 【 正确答案】 D 【试题解析】 C语言规定了一个字符串结束标志,以字符 0代表,在遇到0时,表示字符串结束,由它前
28、面的字符组成字符串。 18 【正确答案】 D 【试题解析】 本题考查字符串数组和指针的引用方式。在 C语言中,系统在每个字符串或数组的最后自动加入一个字符 0,作为字符的结束标志,在本题中, char a “It is mine”;所表示的 a字符串实际含有 11个字符。 19 【正确答案】 B 【试题解析】 在 C语言中,调用函数不可能改变实参指 针变量的值,但可以改变实参指针变量所指变量的值。了解了实参指针变量的改变情况,本题只剩下简单的 “加减法 ”了。 20 【正确答案】 D 【试题解析】 本题中直接使用指针变量 k,但在使用时要注意对 k的指针运算,此外,一开始应认为 * k的值为数
29、组中的某一下标值,即 * k 0。 21 【正确答案】 B 【试题解析】 按位与运算符 “又将 X变为 5,所以输出5和 0,然后初始化 init(6,2) ,接着又 valueY(4) ;将 X、 Y设为 6和 4,所以输出 6和 4。 30 【正确答案】 B 【试题解析】 C基本的性质就是它的封装性,而封装性主要是靠类来实现的。 31 【正确答案】 A 【试题解析】 左移运算符 “ ”是双目运算符。其功能把 “ ”左边的运算数的各二进位全部左移若干位,由 “ ”右边的数指定移动的位数,高位丢弃,低位补 0。左移 1位,相当于该数乘以 2。 32 【正确答案】 B 【试题解析】 这是一种简单
30、的情况 :不带参数的宏。关键要注意在对 2 * M 1进行宏替换时,要将宏名 M原样替换,得到 NUM的形式为 2 * N 1 1(千万不要随意给 N 1加上小括号,使 NUM变为 2 * (N 1) 1,这就是宏名和变量名之间的区别 ) 。 33 【正确答案】 B 【试题解析】 在函数体语句 b * a;中的 *是指针运算符 (也称间接访问运算符 ) , * a就是 main函数中 a的值。 34 【正确答案】 B 【试题解析】 C语言函数中定义的变量都是属于这个函数的局部变量。 35 【正确答案】 B 【试题解析】 fib(3) fib(2) fib(1) ,而 fib (2) 的返回值为
31、 2, fib(1) 的返回值也为 2,故输出的 fib (3) 的值为 4。 36 【正确答案】 前件 【试题解析】 在树形结构中,每一个节点只有一个前件,称为父节点,没有前件的节点只有一个,称为树的根节点 ;每一个节点可以有多个后件,它们都称为该节点的子节点。没有后件的节点称为叶子节点。 37 【正确答案】 数据结构 【试题解析】 结构化分析方法主要包括 :面向数据流的结构化分析方法 (SA-Structured analysis) ,面向数据 结构的 Jackson方法 (JSD-Jackson system development method) 和面向数据结构的结构化数据系统开发方法
32、 (DSSD-Data structured system development method) 。 38 【正确答案】 类 【试题解析】 在面向对象的模型中,最基本的概念是对象和类。对象是现实世界中实体的模型化 ;将属性集和方法集相同的所有对象组合在一起,可以构成一个类。 39 【正确答案】 降低复杂性 【试题解析】 模块化是指解决一个复杂问题时自 顶向下逐层把软件系统划分成若干模块的过程,由此分解来降低复杂性。 40 【正确答案】 逻辑数据模型 【试题解析】 数据是现实世界符号的抽象,而数据模型 (data model) 则是数据特征的抽象,它从抽象层次上描述了系统的静态特征、动态行为和
33、约束行为,为数据库系统的信息表示与操作提供一个抽象的框架。数据模型按不同的应用层次分成 3种类型,它们是概念数据模型 (conceptual data model) 、逻辑数据模型 (logic data model) 、物理数据模型 (physical data model)。 41 【正确答案】 多态性 【试题解析】 面向对象系统包含了 3个特征 封装性、继承性和多态性,这 3个特征可以很好地实现数据抽象,进行行为共享,完成进化求解和描述一个系统的确定行为。 42 【正确答案】 true 【试题解析】 本题考查的是对于逻辑运算符号的理解, “ | ”运算符的任何一边取值为真,则整个运算结果为真。 43 【正确答案】 5 【试题解析】 因为 b的值为 1,所以 b delete a; a new int(10) ;delete a; a Hew int10 ;delete a;。 50 【正确答案】 函数重载;虚函数 【试题解析】 C中的多态性是在编译时通过函数重载和模板体现的,在运行时是通过虚函数体现的。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1