1、国家二级( C+)笔试模拟试卷 82及答案与解析 1 最简单的交换排序方法是 ( A)快速排序 ( B)选择排序 ( C)堆排序 ( D)冒泡排序 2 栈通常采用的两种存储结构是 ( A)线性存储结构和链表存储结构 ( B)散列方式和索引方式 ( C)链表存储结构和数组 ( D)线性存储结构和非线性存储结构 3 线性表的顺序存储结构和线性表的链式存储结构分别是 ( A)顺序存取的存储结构、顺序存取的存储结构 ( B)随机存取的存储结构、顺序存取的存储结构 ( C)随机存取的存储结构、随机存取的存储 结构 ( D)任意存取的存储结构、任意存取的存储结构 4 完全不考虑程序的内部结构和内部特征,而
2、只是根据程序功能导出测试用例的测试方法是 ( A)黑箱测试法 ( B)白箱测试法 ( C)错误推测法 ( D)安装测试法 5 在结构化设计方法中,生成的结构图 (SC) 中,带有箭头的连线表示 ( A)模块之间的调用关系 ( B)程序的组成成分 ( C)控制程序的执行顺序 ( D)数据的流向 6 下列选项中,不属于模块间耦合的是 ( A)数据耦合 ( B)同构耦合 ( C)异构耦合 ( D)公用耦合 7 一个关系中属性个数为 1时,称此关系为 ( A)对应关系 ( B)单一关系 ( C)一元关系 ( D)二元关系 8 为用户与数据库系统提供接口的语言是 ( A)高级语言 ( B)数据描述语言
3、(DDL) ( C)数据操纵语言 (DML) ( D)汇编语言 9 相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和 ( A)可重用性差 ( B)安全性差 ( C)非持久性 ( D)冗余性 10 需求分析阶段的任务是确定 ( A)软件开发方法 ( B)软件开发工具 ( C)软件开发费用 ( D)软件系统功能 11 面向对象程序设计思想的主要特征中不包括 ( A)继承性 ( B)功能分解,逐步求精 ( C)封装性和信息隐藏 ( D)多态性 12 C+语言是以哪种语言为基础逐渐发展演变而成的一种程序设计语言 ( A) ASP ( B) C ( C) VB ( D) Java 13
4、设变量 a是 int 型, f是 double 型, i是 float 型,则表达式 10+a+i*f值的数据类型 ( A) int ( B) float ( C) double ( D)不确定 14 能正确表示逻辑关系 : “a10或 a0”的 C+语言表达式是 ( A) a =10 or a =0 ( B) a =0|a =10 ( C) a =10 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、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 ( 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 =“
6、It is mine“; char * p=“It is mine“; 则以下不正确的叙述是 ( A) a+1表示的是字符 t的地址 ( B) p指向另外的字符串时,字符串的长度不受限制 ( C) p变量中存放的地址值可以改变 ( D) 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,i ( A) 7,431 ( B) 6 ( C) 980 ( D) 6,980 21 执行下列程序段,结果是 #include
7、iostream.h void main( ) int x=40; char y=C; int n; n=(x for(i=1,i = NUM;i+) cout i; 该程序中的 for循环执行的次数是 ( 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(,则表达式 (+a/B) *b的值为【 】。 42 C+语言提供的基本控制结构可以分为 3种类型:顺序结
8、构、【 】和循环结构。 43 C+语句 const char*const p=“hello“;,所定义的指针 p和它所指的内容都不能被【 】。 44 C+语言的参数传递机制包括传值和传地址两种,如果调用函数时,需要改变实参或者返回多个值,应该采取【 】方式。 45 对于下面定义的类 MyClass,请在函数 f( )中添加对象成员把 n的值修改为50。 class MyClass public: MyClass(int x)n=x; void SetNum(int nl)n = nl; private: int n; ; int f( ) MyClass * ptr=new MyClass(4
9、5); 【 】 46 继承的方式有公有继承、私有继承和【 】 3种。 47 表达式 operator+(x, y)还可以表示为【 】。 48 类模板的使用实际上是将类模板实例化成一个具体的【 】。 49 下列程序在构造函数和析构函数中申请和释放类的数据成员 int *a,申请时使用形参 b初始化 a,请填空。 class A public: A(int b) ; A( ); private: int *a; ; A:A(int b) 【 】; A: A( ) 【 】; 50 C+语言中的多态性是在编译时通过【 】和模板体现的,在运行时是通过【 】体现的。 国家二级( C+)笔试模拟试卷 82答
10、案与解析 1 【正确答案】 D 【试题解析】 冒泡排序是一种最简单的交换类排序方法,它是通过相邻数据元素的交换逐步将线性表变成有序。注意:交换排序方法有冒泡排序和快速排序,显然选项 B 和选项 C 错误,冒泡排序比较简单,其算法也容易理解, 但快速排序本身较为复杂,且采用了递归调用,其算法理解也稍难。注意:插入排序、选择排序、归并排序、基数排序等排序方法的特点。 2 【正确答案】 A 【试题解析】 和线性表类似,栈也有两种存储方法,一是顺序栈,二是链式栈。栈的顺序存储结构是利用一组地址连续的存储单元一次存储自栈底到栈顶的数据元素,同时附设指针 top 指示栈顶元素的位置,由于栈的操作是线性表操
11、作的特例,相对而言,链式栈的操作更易于实现。注意:这 3种运算方法在各种存储结构中的应用。 3 【正确答案】 B 【试题解析】 顺序存储结构 中,数据元素存放在一组地址连续的存储单元中,每个数据元素地址可通过公式 LOC(a(下标 )i)=LOC(a(下标 )1)+(i-1)L 计算得到,从而实现了随机存取。对于链式存储结构,要对某结点进行存取,都得从链的头指针指向的结点开始,这是一种顺序存取的存储结构。注意:顺序存储结构和链式存储结构的定义和性质,两种存储结构的操作方法。 4 【正确答案】 A 【试题解析】 黑箱测试方法完全不考虑程序的内部结构和内部特征,而只是根据功能导出测试用例。注意:白
12、箱测试是根据对程序内部逻辑结构的分析来选取测试用例, 白箱测试也称为逻辑覆盖测试,故选项 B 不正确;错误推测法只是黑箱测试所使用的一种具体的方法,故选项 C 不正确;安装测试是测试层次中的 种,它属于高级测试,故选项 D 不正确。注意:常用的黑箱测试方法及其定义,白箱测试用例的准则。 5 【正确答案】 A 【试题解析】 常用的软件结构设计工具是结构图 (SC-Structure Chart),也称程序结构图。其中,矩形内用于注明模块的功能和名字;箭头表示模块间的调用关系,带实心圆的箭头表示传递的是控制信息,带空心圆的箭头表示传递的是数据。注意:根据结构图 设计思想,了解结构图构成的基本形式。
13、 6 【正确答案】 C 【试题解析】 模块之间的耦合程度反映了模块的独立性,也反映了系统分解后的复杂程度。按照耦合程度从弱到强,可以将其分成 5级,分别是:数据耦合、同构耦合、控制耦合、公用耦合和内容耦合。选项 C ,没有这种耦合方式。注意:评价模块独立性的主要标准,以及对它们的定义和分类。 7 【正确答案】 C 【试题解析】 在关系模型数据库中,基本结构是二维表,这种二维表称为关系。关系的列称为属性,一个具有 N个属性的关系称为 N元关系。注意:各种关系查询 语言与过程性语言和非过程性语言的关系,过程性语言的特点。 8 【正确答案】 C 【试题解析】 DBMS 提供数据操纵语言 (DML)实
14、现对数据库中数据的操作,数据操纵语言 (DML)是用户 (包括应用程序 )与数据库系统的接口。数据操纵语言通常包括检索和更新功能。注意:程序模块中语言处理部分的分类,各子类的定义及其功能。 9 【正确答案】 D 【试题解析】 文件系统所管理的数据文件基本上是分散的、相互独立的,因此相对于数据库系统,以此为基础的数据处理存在 3个缺点,数据冗余大、数据的不一致性、程序 与数据的相互依赖 (简称为数据依赖 )。注意:文件系统和数据库系统各自的特点,人工管理阶段及数据库系统三代的特点。 10 【正确答案】 D 【试题解析】 需求分析是软件定义时期的最后一个阶段,它的基本任务就是详细调查现实世界要处理
15、的对象 (组织、部门、企业等 ),充分了解原系统的工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。注意:选项 A 软件开发方法是在总体设计阶段完成的任务;选项 B 软件开发工具是在实现阶段需完成的任务;选项 C 软件开发费用是在可行性研究阶段需完成的任务。注意:需求分析的 任务和它的 6种方法。 11 【正确答案】 B 【试题解析】 面向对象程序设计的主要特征是继承性,封装性和信息隐藏,多态性。 12 【正确答案】 B 【试题解析】 C+语言是对 C语言进行了扩充,继承了它的语法,并增加了面向对象的设计方法。 13 【正确答案】 C 【试题解析】 根据混合运算规则,如果有一个数据
16、是 double型,则其他数据类型先转化为 double 型,运算的结果最终也是 double型。为保证精度的不丢失,表达式的数据类型是变量和常量中精确度最高的变量类型。 14 【正确答案】 D 【试题解析】 逻辑运算符 “|”表示或的意思。 15 【正确答案】 B 【试题解析】 该题是一个 for循环嵌套语句。第一层 for循环循环 2次,第二层循环 3次,但当 j等于 0和 1时,将执行 continue语句,不执行 x+运算,所以每次执行完内循环后, x的增量为 1。最后一个 x+运算将每次累加起来就是 x的值。 16 【正确答案】 C 【试题解析】 本题考查简单的 ifelse 语句。
17、先执行条件 if(a B,显然不成立,则执行 else语句。 17 【正确答案】 D 【试题解析】 C+语言规定了一个字符串结束标志,以字符 0代表,在遇到 0时,表示字符串结束,由它前面的字符组成字符串。 18 【正确答案】 D 【试题解析】 本题考查字符串数组和指针的引用方式。在 C+语言中,系统在每个字符串或数组的最后自动加入一个字符 0,作为字符的结束标志,在本题中,char a=“It is mine“;所表示的 a字符串实际含有 11个字符。 19 【正确答案】 B 【试题解析】 在 C+语言中,调用函数不可能改变实参指针变量的值,但可以 改变实参指针变量所指变量的值。了解了实参指
18、针变量的改变情况,本题只剩下简单的 “加减法 ”了。 20 【正确答案】 D 【试题解析】 本题中直接使用指针变量 k,但在使用时要注意对 k的指针运算,此外,一开始应认为 *k 的值为数组中的某一下标值,即 *k=0。 21 【正确答案】 B 【试题解析】 按位与运算符 “&”是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为 1时,结果位才为 1,否则为 0。参与运算的数以补码方式出现。逻辑与运算符 “&”需要两边的结果都为 1时,其 结果才为 1。 22 【正确答案】 D 【试题解析】 C+的 this 指针是系统默认产生的一个指针,它是 const的,所以
19、是不能够被改变,不能够被赋值的。 23 【正确答案】 B 【试题解析】 类 D继承了类 C和类 B,所以在构造的时候分别构造类 B 和类C。 24 【正确答案】 D 【试题解析】 虚函数一定不能定义为静态的。虚函数可以声明为友元,子类也不是必须重定义父类的虚函数,若在重定义虚函数时使用了 virtual,则该重定义函数不一定还是虚函数。 25 【正确答案】 A 【试题解析】 C+中用成员函数重载 +x为: x.operator+(),用友元函数重载+x为: operator +(x),用成员函数重载 x/y为: x.operator/(y),用友元函数重载x/y为: operator/(x,
20、y)。 26 【正确答案】 C 【试题解析】 C+语言中默认小数的输出位一共是 6位, fixed的意义是在小数点后保留 6位。 27 【正确答案】 D 【试题解析】 选项 D第一层括号中为数组 a中第 i项元素的值,外面再加指针运算符没有意义。 28 【正确答案】 B 【试题解析】 本题的运算过程是 fun(int)fun (a+c, B, a-C, fun(int)fun(10,5), 2-8), fun (int)15.000000, -6), fun(15, -6)=9。 29 【正确答案】 A 【试题解析】 本题中有成员函数和它的重载函数,要注意它们的不同,在本题中先调用了 init
21、函数,初始化了 X, Y,都为 0, valueX(5);又将 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 【试题解析】 这是一种简单的情况:不带参数的宏。关键要注
22、意在对 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)的返回值为 2, fib(1)的返回值也为2,故输出的
23、fib (3)的值为 4。 36 【正确答案】 存储结构 【试题解析】 数据的逻辑结构是指反映数据元素之间逻辑关系的数据结构;数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式。在数据的存储结构中,不仅要存放各数据元素的信息,还需要存放各数据元素之间的前后件关系的信息。 37 【正确答案】 继承 【试题解析】 类是面向对象语言中必备的程序语言结构,用来实现抽象数据类型。类与类之间的继承关系实现了类之间的共享属性和操作,一个类可以在另一个已定义的类的基础上定义,这样使该类型继承了其超类的属性和方 法,当然,也可以定义自己的属性和方法。 38 【正确答案】 内聚 【试题解析】 内聚性是一
24、个模块内部各个元素间彼此结合的紧密程度的度量,内聚是从功能角度来度量模块内的联系;耦合性是模块间互相连接的紧密程度的度量。 39 【正确答案】 一对多 (或 1:N) 【试题解析】 两个实体集间的联系实际上是实体集间的函数关系,这种函数关系可以有 3种,即 对一 (1:1)的联系、 对多 (1:N)或多对一 (N:1)的联系和多对多(M:N)的联系。 40 【正确答案】 数据库概念设计阶段 【试题解析 】 数据库设计分为以下 6个设计阶段:需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、实施阶段及数据库运行和维护阶段。 41 【正确答案】 2 【试题解析】 运算符 +的优先级高于双目运
25、算符 /,所以括号中的运算为 2/2,最后的结果为 2/2*2。 42 【正确答案】 选择结构 【试题解析】 顺序结构 (也叫连续结构 )和循环结构是经常被使用的,不过选择结构 (if 和 switch)也是一种重要的流程控制结构。 43 【正确答案】 改变 【试题解析】 本题考查的是定义常量的关键字 const,由 const定义的变量的值不可以再改变,所以定义时必须进行初始化。 44 【正确答案】 传地址 【试题解析】 本题考查的是传值调用和传址调用的区别一传值调用只是进行值的简单复制,返回之后不会改变原来的值;而传址调用是把参数的地址传人,会改变原来的值。 45 【正确答案】 ptr-
26、SetNum(50); 【试题解析】 本题考查的是考生使用对象指针调用成员函数的能力,指针调用成员函数应该使用符号 “- ”。 46 【正确答案】 保护继承 【试题解析】 继承性是面向对象程序 设计中最重要的机制,用户可以根据不同的需要选择 3种不同的继承方式。 47 【正确答案】 x+y 【试题解析】 本题考查的是运算符函数的调用,可以像一般函数那样用函数名进行调用,也可通过运算符构成表达式的形式进行调用。 48 【正确答案】 类 【试题解析】 本题考查的是类模板的使用方式,就是把类模板的一般化定义实例化为一个真正的类。 49 【正确答案】 a=new int(B) delete a 【试题解析】 C+中 new 和 delete的使用有如下几种: a=new int; delete a; a=new int(10); delete a; a=new int10; delete a;。 50 【正确答案】 函数重载 虚函数 【试题解析】 C+中的多态性是在编译时通过函数重载和模板体现的,在运行时是通过虚函数体现的。