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

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

1、国家二级( C+)笔试模拟试卷 210及答案与解析 1 算法分析的目的是 ( )。 ( A)找出数据结构的合理性 ( B)找出算法中输入和输出之间的关系 ( C)分析算法的易懂性和可靠性 ( D)分析算法的效率以求改进 2 下列叙述中正确的是 ( )。 ( A)线性链表的各元素在存储空间中的位置必须是连续的 ( B)线性链表的头元素一定存储在其他元素的前面 ( C)线性链表中的各元素在存储空间中的位置不一定是连续的,但表头元素一定存储在其他元素的前面 ( D)线性链表中的各元素在 存储空间中的位置不一定是连续的,且各元素的存储顺序也是任意的 3 线性表常采用的两种存储结构是 ( )。 ( A)

2、顺序存储结构和链式存储结构 ( B)散列方法和索引方式 ( C)链表存储结构和数组 ( D)线性存储结构和非线性存储结构 4 设栈 S和队列 Q的初始状态为空,元素 a、 b、 c、 d、 e和 f依次通过栈 s,一个元素出栈后即进入队列 Q,若 6个元素出队的顺序是 b、 d、 c、 f、 e、 a,则栈 s的容量至少应该是 ( )。 ( A) 6 ( B) 4 ( C) 3 ( D) 2 5 数据库 DB、数据库系统: DBS、数据库管理系统 DBMS之间的关系是( )。 ( A) DB包括 DBS和 DBMS ( B) DBMS包括。 DB和 DBS ( C) DBS包括 DB和 DBM

3、S ( D)没有任何关系 6 在包含 1000个元素的线性表中实现如下各运算,所需的执行时间最长的是( )。 ( A)线性表按顺序方式存储,在线性表的第 100个结点后面插入一个新结点 ( B)线性表按链接方式存储,在线性表的第 100个结点后面插入一个新结点 ( C)线性表 按顺序方式存储,删除线性表的第 900个结点 ( D)线性表按链接方式存储,删除指针 P所指向的结点 7 一间教室可坐多名学生,则实体教室和学生之间的联系是 ( )。 ( A)一对一 ( B)一对多 ( C)多对一 ( D)多对多 8 对于长度为 n的线性表,在最坏情况下,下列各种排序法所对应的比较次数中正确的是 ( )

4、。 ( A)冒泡排序为 n 2 ( B)冒泡排序为 n ( C)快速排序为 n ( D)快速排序为 n(n-1) 2 9 对关系 S和 R进行集合运算, 结果中既包含 s中的所有元组也包含 R中的所有元组,这样的集合运算称为 ( )。 ( A)并运算 ( B)交运算 ( C)差运算 ( D)积运算 10 建立 E-R模型的工作,属于软件生命周期中的 ( )。 ( A)需求分析阶段 ( B)设计阶段 ( C)编码阶段 ( D)测试阶段 11 有如下程序: #include using namespace std; classA public: A()cout using namespace st

5、d; class A public: A(int i,intj) a=i: b=j; void move(int x,int y) a+=x; b+=y; void show() cout( using namespace std; class Test public: Test() n+=2; Test()n-=3; ) static im getNum()return n; private: staticintn; ; int Test: n=1; int main() Test*p=new Test; delete p; cout using namespace std; int s=0

6、: class sample staticintn: public: sample(int i) n=i: static void add() S+=n: ; int sample: n=0; int main() sample a(2), b(5); sample: add(); cout using namespace std; class sample private: intx, y; public: sample(int i,int j) x=i: y=j; void disp() cout using namespace std; class TestClass protected

7、: TestClass()cout using namespace std; class TestClass public: void who()coutwho(); return 0: 则该程序运行后的输出结果是 ( )。 ( A) TestClassl ( B) TestClass ( C) 0 ( D)无输出 27 下列有关继承和派生的叙述中,正确的是 ( )。 ( A)如果一个派生类私有继承其基类,则该派生类对象不能访问基类的保护成员 ( B)派生 类的成员函数可以访问基类的所有成员 ( C)基类对象可以赋值给派生类对象 ( D)如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽

8、象类 28 下面叙述错误的是 ( )。 ( A)派生类可以使用 private派生 ( B)对基类成员的访问必须是无二义性的 ( C)基类成员的访问能力在派生类中维持不变 ( D)赋值兼容规则也适用于多继承的组合 29 下列程序的输出结果为 2,横线处应添加语句 ( )。 #include using namespace std; class TestClass 1 public: _void fun()coutfun(); deletep; return0; ( A) public ( B) private ( C) virtual ( D) protected 30 要使程序执行后的输出结

9、果为 ABCD,应在横线处添加语句 ( )。 #include using namespace std; classA public: A()cout using namespace std; class TestClass1 public: TestClass1() x=0: int x; ; class TestClass2: virtual public TestClass 1 public: TestClass2() x=10; ; class TestClass3: virtual public TestClass 1 public: TestClass3() x=20; ; cla

10、ss TestClass4: public TestClass2, protected TestClass3 ; intmain() TestClass4 obj; cout int add(int x, int y) return x+y; double add(double x, double y) returnx+y; void main() int a=3, b=3; double c=6 5, d=1 5; cout #include class Rect public: Rect(int 1,int w)length=l; width=w; ) void Print()coutPr

11、int(); delete p; 45 类中数据成员和成员函数的默认访问级别为 _。 46 有如下程序: #include using namespace std; class PARENT public: PARENT()cout #include class Sample public: intx, y; Sample()x=y=0; Sample(int a, int b)x=a; y=b; void disp() cout using namespace std; intmain() void test(int, char, double_); test(1, A, 10 1); te

12、st(2, B); return 0: void test(int a, char b, double c) cout、 :、 ?:这五个运算符之外,其他运算符都可以重载。 20 【正确答案】 B 【试题解析】 所谓函数重载是指同一函数名可以对应多个函数实现。进行函数重载时,要求同名函数在参数个数上不同,或者参数类型上不同。 21 【正确答案】 B 【试题解析】 因为对象 a被定义为常对象,所以 a disp()语句调用的是类的常成员函数 void disp()const,输出的结果是 disp2。 22 【正确答案】 C 【试题解析】 因为 static void change()为静态函数

13、,静态函数主要访问静态数据,不访问非静态数据。所以函数中访问了数据 y,所以下划线的数据类型应对应为 static。 23 【正确答案】 C 【试题解析】 程序中的类 TestClass为基类, TestClass1为 TestClass的派生类。由 main主函数入手,定义 TestClass1类型的对象 d1,参数值为 y。 TestClass1类继承 TestClass,所以主函数中 “TestClassl d1(y); ”语句首先调用调用基类中的“TestClass()coutwho()则是调用基类中的 who函数,输出 TestClass。 27 【正确答 案】 D 【试题解析】 如

14、果派生类私有继承基类,不能访问基类中的私有成员,所以 A、B是错误的。派生类是对基类的具体化,所以 C错误的。如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类,即选择 D。 28 【正确答案】 C 【试题解析】 在建立派生类的时候,并不是简单地把基类的私有成员直接作为派生类的私有成员,把基类的公用成员直接作为派生类的公用成员。涉及如何确定基类的成员在派生类中的访问属性问题,不仅要考虑对基类成员所声明的访问属性,还要考虑派生类所声明的对基类的继承方式,根据这两个 因素共同决定基类成员在派生类中的访问属性。所以本题选择 C。 29 【正确答案】 C 【试题解析】 由主函数 main入手

15、,定义 TestClass1类的指针对象 p指向派生类TestClass2。因为基类和派生类中都有 fun函数,题目要求输出为 2,就是基类对象访问派生类中 fun函数。通过虚函数与指向基类对象的指针变量的配合使用,就能方便调用同名函数。所以这里将基类中的 fun函数声明为 virtual。并且当一个成员函数被声明为虚函数后,其派生类中的同名函数自动成为虚函数。 30 【正确答案】 D 【试题解析】 由主函数 main入手,定义了类 D对象 obj。其中 D为类 B和 C的公有继承, A是 C的虚基类。题目中要求的输出结果为 “ABCD”,依次为类 A,类 B,类 C,类 D中构造函数的输出语

16、句。为了保证基类通过多条路径被派生类继承时,即保证 A只被继承一次,输出一个 A,所以不但需要声明 A为 C的虚基类,同样也要声明 A为 B的虚基类。 31 【正确答案】 A 【试题解析】 在基类中用 virtual声明成员函数为虚函数,所以 A是正确的。纯虚函数是在声明虚函数时被 “初始化 ”为 0的虚函数。纯虚函数是一种特殊的虚函数 ,它没有具体的实现。静态数据成员函数只能在类外进行初始化。 32 【正确答案】 C 【试题解析】 如果在类以外的其他地方定义了一个函数,在类体中用 friend对该函数进行声明,此函数就称为本类的友元函数。因为函数为 void fun(),根据友元定义补全语句

17、为 “friend voidfun(); ”。 33 【正确答案】 C 【试题解析】 递归函数 fun被定义为含有参数 int n,返回整型。其中 fun函数递归调用本身,当 n=1时, fun返回 1,如果大于 1那么执行 n*fun(n-2)。所以,当n等于 5时,执行 5*fun(3);当 3时继续调用 fun, 3*fun(1),即fun(5)=5*(3*fun(1),答案为 15。 34 【正确答案】 C 【试题解析】 此题考查的知识点是字面常量。对于整型字面常量,只要没有超过C+中整数所能表示的范围, C+将自动按整数来存储此数,也可以通过在整型字面常量后添加 u或 1来指定无符号

18、整数或长整数来存储;对于实型字面常量, C+将自动按照双精度数来存储,也可以通过在实型字面常量后添加 f来指定按单精度数存储。 35 【正确答案】 C 【试题解析 】 此题考查的是内联函数的概念。在调用时,内联函数会像宏函数一样的展开,将调用表达式用内联函数体来替换,所以它没有一般函数的参数压栈和退栈操作,所以选项 A错误;即使没有使用 inline说明,编译器也会将在类的说明部分定义的函数认定为内联函数,所以选项 B错误;内联函数只是比普通函数有更高的执行效率。 36 【正确答案】 关系 【试题解析】 关系代数是关系操纵语言的一种传统表示方式,它以集合代数为基础发展起来的,但它的运算对象和运

19、算结果均是关系,这些新关系仍可以使用同样的代数运算进一步操作。关系代数也 是一种抽象的查询语言,它通过对关系的运算来表达查询和修改处理的需求。 37 【正确答案】 前后件关系 【试题解析】 在数据存储结构中,除了要存储数据,还要存储数据的前后件关系,对于顺序存储的数据结构,前后件之间的关系是通过存储空间的位置来实现的,而对于链式存储来说,数据元素之间的前后件关系是通过指针来实现的。 38 【正确答案】 相关文档 【试题解析】 计算机软件是计算机系统中与硬件相互依存的另一部分,是包括程序、数据及相关文档的完整集合。 39 【正确答案】 log2n 【试 题解析】 二分法查找,也称拆半查找,是一种

20、高效的查找方法。能使用二分法查找的线性表必须满足两个条件:用顺序存储结构;线性表是有序表。对于长度为 n的有序线性表,在最坏情况下,二分法查找只需比较 log2n次 40 【正确答案】 白箱法 【试题解析】 白箱测试是根据程序内部逻辑结构的分析来选取测试用例。由于测试用例对程序的逻辑覆盖程序决定了测试的完全性的程度,因此白箱测试也称为逻辑覆盖测试。 41 【正确答案】 20 【试题解析】 主函数中定义 TestClass4的对象 obj。 TestClass4虽然公有继承于TestClass2,但是 x在其中为私有,所以无法访问。 TestClass4保护继承于TestClass3, Test

21、Class3中的 x=20为公有成员数据,对象 obj可以访问这个数据,即输出为 20。 42 【正确答案】 内存地址 【试题解析】 指针变量指向的不是变量保存的数据值,而是变量的地址,所以指针变量保存的是对象的内存地址。 43 【正确答案】 6, 8 【试题解析】 C+中允许用同一函数名定义多个函数,这些函数的参数个数和参数类型不同,这就是函数的重载,调用函数 时,系统会根据调用函数时给出的信息,即参数的个数、类型查找与之匹配的函数,然后调用该函数。主函数中的输出语句第一个 add根据 a, b参数类型为整型,调用第一个参数为 int类型的add。即输出 6。同理第二个 add(c, d)调

22、用参数为 double型的 add函数,输出为8。 44 【正确答案】 Area: 20 【试题解析】 此题考查的是内存空间的分配和释放,即 free和 delcte函数的应用。使用 new对某种类型的变量进行动态分配的语法格式为:指针 =new类型;使用 delete对动态分配的变量进行释放是: delete指针。此题中,首先为变量分配内存单元,然后执行语句 p-Print();输出 Arca: 20,然后利用 delete释放内存单元。 45 【正确答案】 私有 或 privale 【试题解析】 此题考查的是类的成员的默认访问权限。在未声明,即默认情况下,类中数据成员和成员函数的默认访问级别为私有。 46 【正确答案】 PARENTSON 【试题解析】 此题考查的是派生类和基类的构造函数。派生类构造函数的执行顺序为:首先调用基类的构造函数,调用顺序按它们被继承时说明的顺序;然后调

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

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

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