1、国家二级( C+)笔试模拟试卷 170及答案与解析 1 按照 “先进后出 ”原则组织数据的数据结构是 ( )。 ( A)队列 ( B)栈 ( C)双向链表 ( D)二叉树 2 常采用的两种存储结构是 ( )。 ( A)顺序存储结构和链式存储结构 ( B)散列方法和索引方式 ( C)链表存储结构和数组 ( D)线性存储结构和非线性存储结构 3 树是结点的集合,它的根结点的数目是 ( )。 ( A)有且只有 1个 ( B) 1或多于 1 ( C) 0或 1 ( D)至少有 2个 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)事件 ( C)方法 ( D)类 8 需求分析阶段的任务是 ( )。 ( A)软件开发方法 ( B)软件开发工具
3、 ( C)软件开发费用 ( D)软件系统功能 9 有下列二叉树,对此二叉树前序遍历 的结果为 ( )。 ( A) ACFXDBEYZ ( B) ABEFXYZCD ( C) ABCDEFXYZ ( D) ABDYECFXZ 10 设 R是一个 2元关系, S是一个 3元关系,则下列运算中正确的是 ( )。 ( A) R-S ( B) RS ( C) RS ( D) R S 11 设有下定义的语句: inta32=10,20,30,40,50,60; intb32=10,20,30,40,50,60; 则 a11*b21)的结果为 ( )。 ( A) 2000 ( B) 1200 ( C) 24
4、00 ( D) 3000 12 下列程序的输出结果是 ( )。 #include iostream.h void main() char*Str; str=“testI“; cout str5; ( A) test! ( B) test ( C)空字符 ( D)异常 13 若有下列定义及初始化语句: int i=100; int*p= intk=*ip; 并假设整型数 i的地址为 0x12345678,指针中的地址为 0x21000000,则 k的值为 ( )。 ( A) 0x12345678 ( B) 0x21000000 ( C) 100 ( D)异常 14 执行语句序列 inti=0;w
5、hile(i 25)i+=3;cout i; 输出结果是 ( )。 ( A) 24 ( B) 25 ( C) 27 ( D) 28 15 有下列程序: #include iostream using namespace std; int main() void function(double val); double val; function(val); cout val; return 0; void fimction(double val) v ( A)编译出错,无法运行 ( B)输出 3 ( C)输出: 3.0 ( D)输出一个不确定的数 16 有如下函数模板声明: template
6、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.5,4.5) ( D) Max double (3.5,4) 17 有下列程序: #include iostream Using namespace std; Class Amount int amount; public; Amount(int n=O):amount(n) Int getAmount()constreturn amount; Amo
7、unt class VAC public: int f() constreturn3; int f() return 5; ; int main() VAC v1; const VAC v2; cout v1.f() v2.f(); ( A) 53 ( B) 35 ( C) 55 ( D) 33 19 有如下函数模板定义: template typename T1,int a2,int a3 T1 fun(T1 a1) return(al+a2+a3); 则下列调用中正确的是 ( )。 ( A) fun int,4,3 (5); ( B) fun 4,3 (5); ( C) fun int,i
8、nt,int (5); ( D) fun(5); 20 有下列程序: #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; vo ( A) print1 ( B) print2 ( C) pfint1 print2 ( D)程序编译时出错 21 下列程序的运行结果是 ( )。 #include iostream.h void fun(int a=a+b+i
9、; i=i+a; void main() int x=5,y=2; fun(x,y); cout x “,“; fun(x); cout x end ( A) 5,2 ( B) 7,11 ( C) 11,23 ( D) 9,23 22 派生类构造函数的成员初始化列表中,不能包含 ( )。 ( A)基类的构造函数 ( B)派生类中子对象的初始化 ( C)基类中子对象的初始化 ( D)派生类中一般数据成员的初始化 23 下列程序的输出结果是 ( )。 #include iostream using namespace std; class TestClass static int i; publi
10、c: TestClass()i+; TestClass()i-; static int getVal()retum i; ; int TestClass i=0; voi ( A) 111 ( B) 121 ( C) 211 ( D) 221 24 下列叙述中错误的是 ( )。 ( A)派生类可以使用 private派生 ( B)对基类成员的访问必须是无二义性的 ( C)基类成员的访问能力在派生类中维持不变 ( D)赋值兼容规则 也适用于多继承的组合 25 有下列程序: #include iostream using namespace std; class TestClass protect
11、ed: TestClass()cout x; TestClass(char c)coutc; ; class TestClassl:public TestClass public: TestClassl(char c)coutc; ( A) y ( B) yx ( C) xy ( D) yy 26 有下列程序: #include iostream using namespace std; class TestClass int a; public: TestClass(int x) a=x; void show()cout a; ; class TestClass1: publicTestCl
12、ass int b; public: TestCla ( A) 5 ( B) 1 ( C) 0 ( D) 2 27 派生类中的成员不能直接访问基类中的 ( )成员。 ( A) public ( B) private ( C) virtual ( D) protected 28 以下 ( )成员函数表示纯虚函数。 ( A) virtual int fun(int) ( B) void fun(int)=0 ( C) virtual void fun()=0 ( D) virtual void fun(int) 29 下列表达式的值为 false的是 ( )。 ( A) 1 3 ( B) MyCl
13、ass operator*(double,MyClass); ( C) MyClass operator*(MyClass,double); ( D) MyClassoperator*(MyClass,MyClass); 33 一个函数为 void f(int,char ch=a),另一个函数为 void f(iht),则它们 ( )。 ( A)不能在同一程序中定义 ( B)可以在同一程序中定义并可重载 ( C)可以在同一程序中定义,但不可以重载 ( D)以上三种说法均不正确 34 关于关键字 class和 typename,下列表述中正确的是 ( )。 ( A)程序中的 typename都可
14、以替换为 class ( B)程序中的 class都可以替换为 typename ( C)在模板形参表中只能用 typename来声明参数的类型 ( D)在模板形参表中只能用 class或 typename来声明参数的类型 35 数据结构分为逻辑结构和存储结构,循环队列属于 _结构。 36 队列是限定在表的一端进行插入和在另一端进行删除操作的线性表。允许插入的一端称作 _。 37 在一个容量为 32的循环队列中,若头指针 front=3,尾指针 rear=2,则该循环队列中共有 _个元素。 38 一棵二叉树第 6层 (根结点为第一层 )的结点最多为 _个。 39 度为 10的线性表进行冒泡排序
15、,最坏情况下需要比较的次数为 _。 40 如果使用数组名称为函数参数,形实结合时,传递的是 _。 41 如果要把返回值为 void的函数 A声明为类 B的友元函数,则应在类 B的定义中加入的语句是 _。 42 与成员访问表达式 p- name等价的表达式是 _。 43 已知有函数 f的定义如下: int f() static int s 0; s+=2; return s; 则在某程序中第 2次执行函数调用语句 “f(); ”时,函数 f的返回值是 _。 44 如下程序声明了一个电话号码类 PhoneNumber,重载了流插入运算符,以便于电话号码的输出。请将程序补充完整。 #include
16、iostream #include iomanip #include string using namespace std; class PhoneMunber public: void setNumber(string number)this- number number; /重载流插入操作符 friend_ 45 如下程序声明了一个使用两个通用数据类型的模板类 dataClass,其中构造函数用于初始化两个数据成员,成员函数 show用于输出两个数据成员的数值。 #include iostream using namespace std; _ T1; T2; public; dataCla
17、ss(T1 aT2 b)i a;j=b; void show()cout i “, ” j n; ; int main() dataCla 46 有如下程序: #include iostream using namespace std; class A public: A()cout “A”; A()cout “A”; ) ; class B A a; public, B()cout “B”; B()cout “B”; ; int main() B b; return 0; 程序的输出结果是 _。 47 请将下列栈类 Stack补充完整。 class Stack private: intpLi
18、st100/int数组,用于存放栈的元素 inttop; /栈顶元素 (数组下标 ) public: Stack(); top(0) void Push(const int class A public: A()cout A; ; class B: _ public: B()cout B; ) ; class C: _ public: C()cout C; ; class D: public 国家二级( C+)笔试模拟试卷 170答案与解析 1 【正确答案】 B 【试题解析】 栈是一种特殊的线性表,其插入和删除运算都只在线性表的一端进行,而另一端是封闭的。进行插入、删除的一端称为栈顶,封闭的一
19、端称为栈底。栈顶元素是最后被插入的元素,而栈底元素是最后被删除的栈,是按 “先进后出 ”的原则组织数据的。 2 【正确答案】 A 【试题解析】 线性表的存储通常要用两种存储结构:顺序存储结构和链式存储结构。 3 【正确答案】 C 【试题解析】 树具有明显的层次关系,即树是一种层次结构。在树结构中,根结点在第一层上。当树为非空时,树中有且只有一个根结点:当树为空时,树中根结点的数目为 0。 4 【正确答案】 B 【试题解析】 根据二分法查找需要两次: 首先将 90与表中间的元素 50进行比较,由于 90大于 50,所以在线性表的后半部分查找: 第二次比较的元素是后半部分的中间元素,即 90, 这
20、时两者相等,即查找功。 5 【正确答案】 D 【试题解析】 程序不光是编写完就结束了,为了测试和维护程序,往往还有其他人阅读和跟踪程序,因此程设计的风格应该强调简单和清晰,即程序的易读性, “清晰第一,效率第二 ”。 6 【正确答案】 C 【试题解析】 结构化程序设计的核心和基础是结构化设计理论,其中包括结构化分析方法、结构化设计方法和结构化编程方法。 7 【正确答案】 D 【试题解析】 类 (calss)描述的是具有相似属性与操作的一组对象,而一个具体对象则是其对应类的一个 实例。 8 【正确答案】 D 【试题解析】 需求分析是软件定义时期的最后一个阶段,它的基本任务就是详细调查现实世界要处
21、理的对象,充分了解原系统的工作概况,明确用户的各种需求,然后在这些基础上确定新系统的功能。 9 【正确答案】 D 【试题解析】 对二叉树的前序遍历是指先访问根结点,然后访问左子树,最后访问右子树,并且,在访问左、右子树时,先访问根结点,再依次访问其左、右子树。 10 【正确答案】 B 【试题解析】 关系的交 ()、并 ( )和差 (-)运算要求两个关系是同元的 ,显然作为二元的 R和三元 S只能做笛卡儿积运算。 11 【正确答案】 C 【试题解析】 因为 a中由第 0个位置开始,所以 a11*b21为二维数组中的第二行二列乘以 b中第三行二列,即 40*60。 12 【正确答案】 C 【试题解
22、析】 字符指针 str值为 “test!”,它们的下标由 0开始,并且具有一个尾符,输出 str5的位置为尾符标识,指针字符指向的尾符为空。所以答案为空字符,即选项 C)正确。 13 【正确答案】 C 【试题解析】 “int *p=(*对象指针名 ),成员名。 43 【正确答案】 4。 【试题解析】 本题考查的是内部静态变量。当函数执行完返回调用点,该变量并不檄消,其值将继续保留,下次 进入该函数时,其值仍然存在。 44 【正确答案】 ostream T2 j;语句知,应该在 i, j对象声明为 T1和 T2类型前,定义模板 T1和 T2。 根据题目中给出的 “模板类 dataClass,使用
23、 C+的关键字 “template”来声明 T1和 T2的定义。 46 【正确答案】 ABBA。 【试题解析】 本题考查派生类的构造函数与析构函数的调用。建立一个派生类对象时,派生类的构造函数的调用顺序如下:基类的构造函数、成员对象的构造函数,派生类自身的构造函数。析构函数的调用顺序与构造函数严格相反。 47 【正确答案】 pListtop item 【试题解析】 略。 48 【正确答案】 virtual publicA virtual public A。 【试题解析】 本题考查虚基类的应用。通过虚基类所派生的类,在所产生的对象中,只包含了一个和其他类共享的基础对象,也就是说,从同一个基类中以虚拟方式派生的所有类,在它们所产生的对象里,不会有一份基础对象,而只是在内存里保留一份基础对象,而派生类中只保留指向此基础对象的指针,这样就不会同时有两份基类对象的情形发生。题中程序最后字符 A只输出了一次,所以类A必须为类 B和类 C的虚基类。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1