[计算机类试卷]国家二级(C++)笔试模拟试卷163及答案与解析.doc

上传人:orderah291 文档编号:502620 上传时间:2018-11-29 格式:DOC 页数:23 大小:66.50KB
下载 相关 举报
[计算机类试卷]国家二级(C++)笔试模拟试卷163及答案与解析.doc_第1页
第1页 / 共23页
[计算机类试卷]国家二级(C++)笔试模拟试卷163及答案与解析.doc_第2页
第2页 / 共23页
[计算机类试卷]国家二级(C++)笔试模拟试卷163及答案与解析.doc_第3页
第3页 / 共23页
[计算机类试卷]国家二级(C++)笔试模拟试卷163及答案与解析.doc_第4页
第4页 / 共23页
[计算机类试卷]国家二级(C++)笔试模拟试卷163及答案与解析.doc_第5页
第5页 / 共23页
点击查看更多>>
资源描述

1、国家二级( C+)笔试模拟试卷 163及答案与解析 1 设计程序时,应采纳的原则之一是 ( )。 ( A)程序的结构应有助于读者的理解 ( B)限制 GOTO语句的使用 ( C)减少或取消注释行 ( D)程序越短越好 2 需求分析阶段的任务是 ( )。 ( A)软件开发方法 ( B)软件开发工具 ( C)软件开发费用 ( D)软件系统功能 3 结构化分析方法是面向 ( )的自顶向下,逐步求精进行需求分析的方法。 ( A)对象 ( B)数据结构 ( C)数据流 ( D)目标 4 已知一个有序线性表为 (13, 18, 24, 35, 47, 50, 62, 83, 90, 115, 134),当

2、用二分法查找值为 90的元素时,查找成功的比较次数为 ( )。 ( A) 1 ( B) 2 ( C) 3 ( D) 9 5 下列对于软件测试的描述正确的是 ( )。 ( A)软件测试的目的是证明程序是否正确 ( B)软件测试的目的是使程序运行结果正确 ( C)软件测试的目的是尽可能地多发现程序中的错 误 ( D)软件测试的目的是使程序符合结构化原则 6 下列选项中,不是一个算法的基本特征的是 ( )。 ( A)完整性 ( B)可行性 ( C)有穷性 ( D)拥有足够的情报 7 下列叙述中正确的是 ( )。 ( A)线性链表的各元素在存储空间中的位置必须是连续的 ( B)线性链表的头元素一定存储

3、在其他元素的前面 ( C)线性链表中的各元素在存储空间中的位置不一定是连续的,但表头元素一定存储在其他元素的前面 ( D)线性链表中的各元素在存储空间中的位置不一 定是连续的,且各元素的存储顺序也是任意的 8 有下列二叉树,对此二叉树中序遍历的结果是 ( )。 ( A) BDYEACFXZ ( B) DYBEAFCZX ( C) ABCDEFXYZ ( D) ABDYECFXZ 9 最简单的交换排序方法是 ( )。 ( A)快速排序 ( B)选择排序 ( C)堆排序 ( D)冒泡排序 10 数据库 DB、数据库系统 DBS、数据库管理系统 DBMS之间的关系是 ( )。 ( A) DB包括 D

4、BS和 DBMS ( B) DBMS包括 DB和 DBS ( C) DBS包括 DB和 DBMS ( D)没有任务关系 11 下面关于虚函数的描述中正确的是 ( )。 ( A)虚函数是一个静态成员函数 ( B)虚函数是一个非成员函数 ( C)虚函数可以在函数说明时定义,也可以在函数实现时定义 ( D)派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型 12 以下 for语句中不是死循环的是 ( )。 ( A) for(int i 0; i 1; +i); ( B) for(int i 0;+i); ( C) for(int i=1; i 0; +i); ( D) for(; ); 13

5、 执行下列语句序列: int i=0; while(i 25)i+=3; cout i; 输出结果是( )。 ( A) 24 ( B) 25 ( C) 27 ( D) 28 14 C+语言中在 C语言的基础上增加的特性不包括 ( )。 ( A)结构 ( B)引用 ( C)类和对象 ( D)静态成员函数 15 有如下函数模板声明: template typename T T Max(T a, T b)return(a)b)?a: b; 下列对函数模板 Max()的调用中错误的是 ( )。 ( A) Max(3.5, 4.5) ( B) Max(3.5, 4) ( C) Max(double)(3

6、.5, 4.5) ( D) Max(double)(3.5, 4) 16 关于 continue语句叙述不正确的是 ( )。 ( A) continue语句用于循环体中,结束循环 ( B) continue语句用于循环体中 ,它使执行流跳出循环体中尚未执行的语句,并进行下一循环判断 ( C) continue可以用于 if语句中 ( D) continue语句不能代替 break语句 17 若有说明: inta34;则对 a数组元素的非法引用是 ( )。 ( A) a02*1 ( B) a13 ( C) a4-20 ( D) a04 18 静态成员函数没有 ( )。 ( A)返回值 ( B)

7、this指针 ( C)指针参数 ( D)返回类 型 19 执行下列语句后,输出结果为 ( )。 cout put(s); cout c a; ( A) ca ( B) sca ( C) s ( D) a 20 下面程序的执行结果是 ( )。 #include”iostream.h” void main() int*p, r; p new in; *p=20; r=sizeof(*p); cout r endl delete p; ( A)程序错误 ( B)内存为 20地址的大小 ( C) 20 ( D) 4 21 C+语言中关于构造函数的说法正确的是 ( )。 ( A)构造函数的函数名不必和类

8、名相同 ( B)构造函数只能每一个 ( C)每个类必定有构造函数 ( D)构造函数必有返回值 22 ( )既可重载为一元运算符,又可重载为二元运算符。 ( A) “*” ( B) “=” ( C) “ ”和 “*” ( D) “*”和 “*+” 23 有如下程序 : #include(iostream) using namespace std; class TestClass protected: TestClass()couti(cout x; TestClass(char c)cout c; ; class TestClassl: publicTestClass public: TestC

9、lassl(char c)coutc; ; int main() Te ( A) y ( B) yx ( C) xy ( D) yy 24 有如下程序: #include iostream Using namespace std; Class TestClass private: int X, y; public: TestClass(int i, int j) x i; y j; void print() cout “printl” endl; void print()const cout “print2”endl; ; int mai ( A) print1 ( B) print2 ( C

10、) print1 print2 ( D)程序编译时出错 25 有如下程序: #include iostream using namespace std; Class TestClass int a; public: TestClass(int x)a x; void show()cout a; ; class TestClass1: public TestClass int b; public: TestClass1(int i):TestClass(i+1), b(i) voi ( A) 5 ( B) 1 ( C) 0 ( D) 2 26 下面程序输出的结果为 ( )。 #inClUde”i

11、ostream.h” Class A public: A()cout “CLASS A” 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 ( D) CLASS A CLASS B CLASS A CLASS B CLASS B CLASS B 27 在下面的运算符重载函数的原型中,错误的是

12、 ( )。 ( A) Volume operator-(double, dpible); ( B) double Volume: operator-(double); ( C) Volume Volume: operator-(Volume); ( D) Volume operator-(Volume); 28 若有以下程 序: #include iostream using namespace Std; Class Base public: Base() x 0; int x; ; class Derivedl: virtua1 public Base public: Derived1()

13、x 10; ; class Derived2: virtual1 public Base public: Derived2() ( A) 20 ( B) 30 ( C) 10 ( D) 0 29 下面类的定义,有 ( )处错误。 class MyClass public: void MyClass(); MyClass(int value); private: int i 0; ; ( A) 1 ( B) 2 ( C) 3 ( D) 4 30 有以下程序: Class Date public: Date(int y, int m, int d); year y; month=m; day d;

14、 Date(int y 2000) year y; month 10; day=1; ) Date(Date void disp() cout a“, ”; ; class B private: int b; public: B(int j b j; void disp() cout b ( A) 10, 10, 10 ( B) 10, 12, 14 ( C) 8, 10, 12 ( D) 8, 12, 10 33 下列表达式的值为 false的是 ( )。 ( A) 1 3; class Derived: public Base public: void fun() _/显示调用基类的 fu

15、n函数 cout “Derived: fun“ endl; ; 46 _是实现 C+语言编译时多态性的机制, _是实现 C+语言运行时多态性的机制。 47 下列程序的运行结果是 _。 #include iostream.h) class test private: int num; public: test(); int TEST()return num+100; test(); ; test: test()num 0; test: test()cout “Destructor is active“ endl; void main() t 48 若下列程序运行时输出结果为 1, A, 10 1

16、 2, B, 3 5 请将程序补充完整。 #include iostream using namespace std; int main() void test(mt, char, double_); test(1, A, 10.1); test(2, B); return 0; void test(int a, char b, double c) cout a 49 友元类的所有成员函数都是另一个类的 _。 国家二级( C+)笔试模拟试卷 163答案与解析 1 【正确答案】 A 【试题解析】 程序设计的风格主要强调程序的简单、清晰和可理解 性,以便读者理解。程序滥用 GOTO语句将使程序流程

17、无规律,可读性差,添加注释行有利于对程序的理解,不应减少或取消,程序的长短要依据实际的需要而定,并不是越短越好。 2 【正确答案】 D 【试题解析】 需求分析是软件定义时期的最后一个阶段,它的基本任务就是详细调查现实世界要处理的对象,充分了解原系统的工作概况,明确用户的各种需求,然后在这些基础上确定新系统的功能。 3 【正确答案】 C 【试题解析】 结构化分析方法是面向数据流进行需求分析的方法,采用自项向下、逐层分解,建立系统的处理流 程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。 4 【正确答案】 B 【试题解析】 根据二分法查找法需要两次; (1) 首先将 90与表中间的元素 5

18、0进行比较,由于 90大于 50,所以在线性表的后半部分查找。 (2) 第二次比较的元素是后半部分的中间元素,即 90,这时两者相等,即查找成功。 5 【正确答案】 C 【试题解析】 软件测试是为了尽可能多地发现程序中的错误,尤其是发现至今尚未发现的错误。 6 【正确答案】 A 【试题解析】 作为一个算法,一般应该具有下列 4个特 征: (1) 可行性,即考虑到实际的条件能够达到一个满意的结果; (2) 确定性,算法中的每一个步骤都必须是有明确定义的, (3) 有穷性,一个算法必须在有限的时间内做完; (4) 拥有足够的情报。 7 【正确答案】 D 【试题解析】 在线性链表中,各元素在存储空间

19、中的位置是任意的,各元素的顺序也是任意的,依靠指针来实现数据元素的前后件关系。 8 【正确答案】 B 【试题解析】 对二叉树的中序遍历是指:首先遍历左于树,然后访问根结点,最后遍历右子树。在遍历左、右子树时,注意依旧按照 “左子树 -根结点 -右子树 ”的顺序。本题的遍历顺序是这样的; 9 【正确答案】 D 【试题解析】 交换排序方法是指借助数据元素之间的互相交换进行排序的一种方法,包括冒泡排序和快速排序。冒泡排序是一种最简单的交换排序方法,它通过相邻元素的交换,逐步将线性表变成有序。 10 【正确答案】 C 【试题解析】 数据库系统 (DBS)由数据库 (DBS)、数据库管理系统 (DBMS

20、)、数据库管理员、硬件:平台和软件平台 5个部分组成,可见 DB和 DBMS都是 DBS的组成部分。 11 【正确答案】 D 【试 题解析】 本题考查虚函数的概念。虚函数是非静态的成员函数,它不能是友元函数,但可以在另一个类中被声明为友元函数。虚函数必须是类的成员函数,虚函数声明只能出现在类定义的函数原型声明中,而不能在成员函数的函数体实现的地方,一般要求基类中说明了虚函数后,派生类说明的虚函数应该与基类中虚函数的参数个数相等,对应参数的类型相同。如果不相同,则将派生类虚函数的参数类型强制转换为基类中虚函数的参数类型。 12 【正确答案】 A 【试题解析】 考查循环语句 for的使用。 for

21、循环开始时,首先执行初始化操作,然 后判断终止条件是否满足,如果满足,则执行循环体中的语句,最后执行迭代部分。完成一次循环后,重新判断终止条件。在 for语句中,如果省略了终止条件判断部分,并且在语句中没有 break,或者是终止条件判断部分始终没有终止,都将出现死循环。 13 【正确答案】 C 【试题解析】 本题考查的是循环语句 while的使用。 i为 3的倍数,当 i=24时; i 25,执行 while的循环体 i+ 3,则 i=27,不满足 i 25的条件,结束循环。 14 【正确答案】 A 【试题解析】 本题很筒单,不过考生要 注意引用是 C+的新特性。只有结构是C语言也有的特征。

22、 15 【正确答案】 B 【试题解析】 本题考查的是函数模板的引用。引用模板函数和引用一般函数在语法形式上基本相同。需要注意的是,说明一个函数模板后,当编译系统发现有一个对应的函数调用时,将根据实参中的类型来确认是否调用函数模板中的对应形参。本意选项 B中,编译系统从第一个参数 “3.5”获得信息 “double型数据 ”和从第二个参数获得信息 “int型数据 ”两者矛盾, 16 【正确答案】 A 【试题解析】 考查 continue语句的运用 。 continue是指跳出了本次循环中尚未执行的语句,重新执行;循环,但没有终止循环。 17 【正确答案】 D 【试题解析】 数组的下标是从 0开始

23、,至 n-1为止,因此选项 D是正确答案。 18 【正确答案】 B 【试题解析】 this指针是系统隐含的用于指向当前对象的指针。由于静态函数是同类中所以对象都共事的函数,在内存当中只存在一份,不属于某个对象所有,所以静态函数没有 this指针。 19 【正确答案】 B 【试题解析】 本题考查 cout对象的成员函数 put方法和操作 符的使用方法。 20 【正确答案】 D 【试题解析】 考查指针和运算符 sizeof的运用。理解 sizeof的用法,它可以运算出各种数据类型所占内存空间的多少。选项 C中是指针 p所指向的内存地址中内容是 20。在用完申请后的内存应立刻释放。 21 【正确答案

24、】 C 【试题解析】 本题考查构造函数的概念。构造函数可以被重载,构造函数的函数名必须和类名相同:构造函数可以有一个,也可以有多个,构造函数没有返回值。 22 【正确答案】 A 【试题解析】 本题考查的是运算符的有关概念。 “*”是二元运算符,既可以用于间接访问:也可用于两数相乘;而 “ ”和 “*+”都是一元运算符。 23 【正确答案】 C 【试题解析】 本题中类 TestClass为基类, TestClass1为 TestClass的派生类。由 main主函数入手,定义 TestClassl类型的对象 dl,参数值为 y。 TestClassl类继承 TestClass,所以主函数中 “T

25、estClassldl(y); ”语句首先调用 “TestClass1 (char c)cout c; ”然后调用基类中的 “TestClass()cout x; ”输出 x,然后执行 “TestClass(charc)eout c;”输出 y,即答案为 “xy”。 24 【正确答案】 B 【试题解析】 本题由主函数 main入手,定义 TestClass型的常对象 a,然后调用对象 a中的成员函数 print()。因为在 C+中,如果一个对象被声明为常对象,则不能调用该对象中的非 const型的成员函数。所以,这里调用的是对象中的eonst型成员函数 “void prmt()eonst”,输

26、出为 print2。 25 【正确答案】 D 【试题解析】 TestClass为 TestClass1的基类,在主函数 main中定义 TestClass对象 b, *p。 TestClassl对象 d, p指向 d,调用其 show函数。 “TestClass(int i):TestClass(i+1), b(i)”语句中的 TestClass基类参数为 2,所以 show输出 2。 26 【正确答案】 C 【试题解析】 本题考查类的继承、类的实例化和构造函数、析构函数的调用方式和何时调用。每实例化一个类就要调用其构造函数,结束运行该实例后调用析构函数。 27 【正确答案】 A 【试题解析】

27、 C+把重载的运算符视为特殊的函数,称为运算符函数,函数名就是在运算符前面保留宇 operator。运算符重载的定义格式:返回类型 operator运算符号 (参数说明 );运算符 ”-”是二元运算符, A选项中重载函数的形参列表都是 double,而重载函数的返回类型为类 Volume,显然是错误的。 28 【正确答案】 A 【试题解析】 本题考查虚基类的应用。虽然 Derived1和 Derived2都是由共同的基类 x派生而来的,但由于引入了虚基类,使得它们分别 对应基类的不同副本,这时数据成员 x只存在一份拷贝,不论在类 Derivedl中修改,还是在 De- rived2中修改,都是

28、直接对这惟一拷贝进行操作。本题程序执行语句 “Derivedob“”时,就会先调用虚基类 Base的构造函数,使得 x=0,然后执行类 Derived1的构造函数使得 x 10,再执行类 Derived2的构造函数,使得 x 20。最后输出 x的值为20。 29 【正确答案】 C 【试题解析】 上述类的定义共有 3处错误。 (1) 类的成员变量不能在定义时进行初始化; (2) 类的:构造函数不能有返 回值 (包括 void类型 ); (3) 类的析构函数不能有参数。 30 【正确答案】 B 【试题解析】 本题拷贝构造函数一共被调用了 3次:第一次是在执行语句 Date date3(date1)

29、;时,用已经建立的对象 date1对正在建立的对象 date3进行初始化;第二次是在调用 fun函数时,由于是传住调用,因此实参对象 date3要对形参对象 d进行初始化,第三次是在执行 fun函数中的返回语句 returntemp;时,系统用返回初始化一个匿名对象时使用了拷贝构造函数。 31 【正确答案】 C 【试题 解析】 本题考查纯虚函数的定义形式。由于纯虚函数在最后要有 “=0”,故据此排除 A和 D。而 B中没有出现 virtual关键词故正确答案为 C。 32 【正确答案】 D 【试题解析】 本题考查派生类构造函数的使用。派生类 C具有多重继承关系,所以在派生类 C的构造函数中应该

30、包含基类 A和 B的成员初始化列表。 33 【正确答案】 C 【试题解析】 false为逻辑常量,选项 A为 1小于 3并且 5小于 7,这个是真的;选项 B是 2不大于 4也为真;选项 D是 5大于 8或者 2小于 8,只要有一个为真, D就为真,所以 选项 D也为真。选项 C中 “const关键字可以参与区分重载函数。 36 【正确答案】 继承。 【试题解析】 类是面向对象语言中必备的程序语言结构,用来实现抽象数据类型。类与类之间的继承 关系实现了类之间的共享属性和操作,一个类可以在另一个已定义的类的基础上定义,这样使读类型继承了其父类的属性和方法,当然,也可以定义自己的属性和方法。 37

31、 【正确答案】 空间。 【试题解析】 算法的复杂度主要包括时间复杂度和空间复杂度。 38 【正确答案】 数据元素。 【试题解析】 数据的基本单位是数据元素。 39 【正确答案】 驱动模块。 【试题解析】 在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块 (桩模块 )。驱动模块的作用是将测试数据传送 给被测试的模块,并显示被测试模块所产生的结果。桩模块用来代替被测模块所调用的模块,返回被测模块所需的信息。 40 【正确答案】 概念设计。 【试题解析】 本题考查数据库设计的流程,数据库设计按流程分为以下阶段:需求分析阶段 概念设计阶段 逻辑设计阶段 物理设计阶段 数据库实

32、施阶段 数据库运行、维护阶段。 41 【正确答案】 x.operator+(operator*(y, z)。 【试题解析】 运算符重载为成员函数的形式:函数类型 operator运算符 (形参表 )函数体; ;运算符重 载为友元函数的形式: friend函数类型 operator运算符(形参表 )函数体; 。一般来讲,单目运算符最好重载为成员函数,双目运算符最好重载为友元函数。运算符函数有两种调用形式,第一种是像一般函数那样用函数名调用,即 y.operator*(z)或者 operator*(y, z);另一种是通过运算符构成表达式,即 y*z。 42 【正确答案】 内存地址。 【试题解析】

33、 指针变量指向的不是变量保存的数据值,而是变量的地址,所以指针变量保存的是对象的内存地址。 43 【正确答案】 1000 10。 44 【正确答案】 int, Test: val=200;。 【试题解析】 类的静态成员变量必须要进行初始化才能使用初始化时需要用域限定符:指明读变量所属的类名。 45 【正确答案】 Base: fun();。 【试题解析】 本题考查的是成员函数的调用。 因为横线处的作用是调用基类的fun函数,又因为派生类也碉 tun()函数,所以必须对 fun()函数加以限定,即Base: fun();。 46 【正确答案】 静态联编、静态绑定 动态联编、动态绑定。 【试题解析】 C+语言编译时多态性的机制是静态绑定,实现 C+语言行时多态性的机制是动态绑定。 47 【正确答案】 100 48 【正确答案】 =3.5。 【试题解析】 本题考查了函数默认参数的应用。本题中第一次调用 test()函数数值 1, A, 10.11第二次调用少了个实参:却要求输出 2, B, 3.5,由此分析,应将test()函数的第三个参数声明为默认参数。且默认为 3.5,才能达到要求输出结果。故应填入 =3.5或者 c=3.5。 49 【正确答案】 友元函数。 【试题解析】 C+语言中友元类 中的函数都是另一个类的友元函数。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1