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

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

1、国家二级( C+)笔试模拟试卷 125及答案与解析 1 图的邻接矩阵表示法适用于表示 ( )。 ( A)稠密图 ( B)无向图 ( C)稀疏图 ( D)有向图 2 栈是线性表的一种,其新加、读取和删除结点只能在栈的 ( )进行操作。 ( A)栈顶 ( B)栈底 ( C)中间位 ( D)随机位置 3 首先访问结点的左子树,然后访问该结点,最后访问结点的右子树,这种遍历方式称为 ( )。 ( A)前序遍历 ( B)中序遍历 ( C)后序遍历 ( D)顺序遍历 4 在软件生存周期中,不属于软件开发 阶段的是 ( )。 ( A)详细设计 ( B)系统设计 ( C)编码和测试 ( D)需求分析 5 为提

2、高软件项目的质量,在软件结构设计时,必须遵循 ( )原则。 ( A)质量控制 ( B)程序优化 ( C)信息隐蔽 ( D)数据共享 6 意味着一个操作在不同的类中可以有不同的实现方式的是指 ( )。 ( A)多继承 ( B)封装 ( C)多态性 ( D)类的复用 7 当数据库被破坏时,若要有效地恢复数据库,可以采用 ( )。 ( A)日志文件 ( B)转储 ( C)记录文件 ( D)转储和日志文 件 8 下列不是数据字典通常包括的内容的是 ( )。 ( A)数据项 ( B)数据结构 ( C)数据流 ( D)数据元素 9 下列不是关系模型的组成部分的是 ( )。 ( A)关系列表 ( B)关系数

3、据结构 ( C)关系操作集合 ( D)关系完整性约束 10 在数据库中,用来抽象、表示、处理现实世界中的数据和信息的是 ( )。 ( A)视图 ( B)数据模型 ( C)数据参考 ( D)数据值 11 设有下列定义语句: int a32=10,20, 30,40, 50,60; int b32=10,20, 30,40, 50,60; 则 a11*b21的结果为 ( )。 ( A) 2000 ( B) 1200 ( C) 2400 ( D) 3000 12 执行下列程序的结果是 ( )。 #include iostream.h void main() char *str; str=“test!

4、“; coutstr5; ( A) test! ( B) test ( C)空字符 ( D)异常 13 若有下列定义及初始化语句: int i=100; int *ip=while(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 function(

5、double val) val=3; 编译运行这个程序将出现的情况是( )。 ( A)编译出错,无法运行 ( B)输出 :3 ( C)输出 :3.0 ( D)输出一个不确定的数 16 有如下函数模板声明: template typename T TMax(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 na

6、mespace std; Class Amount int amount; public; Amount(int n=0):amount(n) Int getAmount()constreturn amount; Amount int f() return 5; ; int main() VAC v1; const VAC v2; cout v1.f() v2.f(); return 0; 运行时的输出结果是( )。 ( A) 53 ( B) 35 ( C) 55 ( D) 33 19 有如下函数模板定义: template typename T1,int a2,int a3 T1 fun(T

7、1 a1) return(a1+a2+a3); 则以下调用中正确的是 ( )。 ( A) fun int,4,3 (5); ( B) fun 4,3 (5); ( C) fun int,int,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 “print1“ endl; void print()const cout “

8、print2“ endl; ; int main() const TestClass a(1,2); a.print(); return 0; 该程序运行后的输出结果是 ( )。 ( A) print1 ( B) print2 ( C) print1 print2 ( D)程序编译时出错 21 下列程序的运行结果是 ( )。 #include iostream.h voidfun(int TestClass()i-; static int getVal()return i; ; int TestClass:i=O; void fun()TestClass ob2;cout ob2.getVal

9、(); int main() TestClass ob1; fun(); TestClass*ob3=new TestClass;cout ob3-getVal(); delete ob3;cout TestClass:getVal(); return 0; ( A) 111 ( B) 121 ( C) 211 ( D) 221 24 下列叙述中,错误的是 ( )。 ( A)派生类可以使用 private派生 ( B)对基类成员的访问必须是无二义性的 ( C)基类成员的访问能力在派生类中 维持不变 ( D)赋值兼容规则也适用于多继承的组合 25 有如下程序: #include iostream

10、 using namespace std; classTestClass protected: TestClass()cout x; TestClass(char c)coutc; ; class TestClass1:public TestClass public: TestClass1(char C) cout c; ; int main() TestClass1 d1(y); return 0; 执行这个程序,屏幕上将显示输出 ( )。 ( A) y ( B) yx ( C) xy ( D) yy 26 有如下程序: #include iostream using namespace s

11、td; 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) void show()coutb; ; int main() TestClass b(5),*p; TestClass1 d(1); p= ; class Derived: public Base public: void f(char * str) cout “Deri

12、ved:“ str end1; ; void main(void) Base * pd=new Base; pd=new Derived; pd- f(a) 47 下列程序的执行结果是【 】。 #include iostream. h class Myclass public: void GetSum(int a) static int Sum: private: int A; ; int Myclass: Sum =10; /必须在类外部对静态数据成员初始化 void Myelass: :GetSum(int a) A=a; Sum+=A; void PrintSum(Myclass voi

13、d main( ) Myclass M,N; M. GetSum(3) N. GetSum(7) PrintSum(M); 48 下列程序的执行结果为【 】。 #include iostream. h class Point public: Point(double i, double j) x=i; y=j; double Area() const return 0.0; private: double x, y; ; class Rectangle: public Point public: Rectangle(double i, double j, double k, double 1)

14、 double Area() const return w * h; private: double w, h; ; Rectangle: :Rectangle(double i, double j, double k. double 1): Point(i,j). w=k, h=1 void fun(Point void main( ) Rectangle rec(3.0, 5.2, 15.0. 25.0); fun(rec) 49 下列程序用于将源文件中的字母进行大小写转换, while的条件是【 】。 #include iostream. h #include fstream. h #i

15、nclude iomanip. h void main( ) char ch; fstream filel, file2 char fn110, fn210; cout “输入源文件名 :“; cin fn1 cout “输入目标文件名 :“; tin fn2 file1, open(fn1 ,ios: :in); file2, open(fn2, ios: out); while(_) if(ch =a 50 以下程序的执行结果是【 】。 #include iostream. h class Sample public: int x: int y; void disp() cout “x=“

16、 x “,y=“ y end1; ; void main() int Sample: * pc; Sample s; pc= s.*pc=10; pc:= s.*pc=20; s.disp(); 国家二级( C+)笔试模拟试卷 125答案与解析 1 【正确答案】 C 【试题解析】 图的邻接矩阵表示法适用于表示稀疏图。 2 【正确答案】 A 【试题解析】 栈是线性表的一种,其新加、读取和删除结点只能在栈的栈顶进行操作。栈是一种先进后出的线性表。 3 【正确答案】 B 【试题解析】 前序遍历序列的顺序是先根、再左子树、最后右子树;中序遍历序列的顺序是先左子树、再根、最后右子树;后序遍历序列的顺序是

17、先左子树、再右子树、最后根。 4 【正确答案】 D 【试题解析】 软件开发共有:需求分析,总体设计,详细设计,系统实现,测试和验收等几个阶段。详细设计、系统设计和编码和测试都属于软件开发阶段。 5 【正确答案】 A 【试题 解析】 软件项目的建设包括项目计划、需求分析、软件开发和系统维护等阶段,质量管理工作会始终贯彻在项目建设的各个阶段。因此为提高软件项目的质量,在软件结构设计时,必须遵循质量控制原则。 6 【正确答案】 C 【试题解析】 多态性是指用同一个名字定义功能相近的不同函数。这就意味着即使操作的特定动作互有区别仍可用同样的接口访问。多态性是对象的一种能力,它可以在运行时刻根据传递的对

18、象参数,决定调用哪一个对象的方法。这样就可以不去考虑所有对象的类型,而可以在不同的类中按不同的方法实现。 7 【正确答案】 D 【试题解析】 恢复故障的原理就是建立数据冗余,建立冗余数据的方式是进行数据转储和登记日志文件。当数据库文件损坏后,可重新装入备份文件恢复到数据库数据转储结束时刻的正确状态,在利用日志文件把已完成的事务进行重做。 8 【正确答案】 D 【试题解析】 数据字典通常包括数据项、数据结构、数据流、数据存储和处理过程五个部分。 9 【正确答案】 A 【试题解析】 关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。 10 【正确答案】 B 【试题解析】 在数据库中

19、,是用 (数据模型 )来抽象、表示、处理实现世界中的数据和信息的。 11 【正确答案】 C 【试题解析】 只为 a中由第 0个位置开始,所以 a11*b21为二维数组中,第二行二列乘以 b中第三行二列,即 40*60。 12 【正确答案】 C 【试题解析】 字符指针 str值为 “test!”,它们的下标由 0开始,并且具有一个尾符,输出 str5的位置为尾符标识,指针字符指向的尾符为空。所以答案为空字符。 13 【正确答案】 C 【试题解析】 “int *ip=”是将 i的 地址赋值给指针,这是 *ip的数值为 i的数值 100。然后 “int k=*ip;”, k的值赋值为 *ip的数值,

20、即 100。 14 【正确答案】 C 【试题解析】 此题考查的是循环语句 while的使用。 i为 3的倍数,当 i=24时, i 25,执行 while的循环体 i+=3,则 i=27,不满足 i 25的条件,结束循环。 15 【正确答案】 D 【试题解析】 此题考查的是函数参数的传递。 c+语言中,函数在传递参数时,总是将实参的值传递给被调用函数的形参,即传值调用。因此,在函数中对形参所作的任何操作 都不会改变实参的值。 16 【正确答案】 B 【试题解析】 此题考查的是函数模板的引用。引用模板函数和引用一般函数在语法形式上基本相同。需要注意的是,说明一个函数模板后,当编译系统发现有一个对

21、应的函数调用时,将根据实参中的类型来确认是否匹配函数模板中的对应形参。本题选项 B)中,编译系统从第一个参数 “3.5”获得信息 “double型数据 ”和从第二个参数获得信息 “血型数据 ”两者矛盾,选项 A)、 C)正确;选项 D)中,函数名后的 double是模板实参表,编译系统会将 int型的形参 “4”自动转化成 double类型。 17 【正确答案】 D 【试题解析】 此题考查的是 “+”运算符重载和 this 指针。语句 amount+=a.amount;实现 3和 7的求和得到 amount=10,要使程序的输出结果为10,需要把 amount的值作为函数的返回值,所以横线处应

22、填入 amount。 18 【正确答案】 A 【试题解析】 此题考查的是常成员函数的应用。 VAC类中说明了两个函数,一个是常成员函数,一个是普通函数:在主函数中说明了两个对象,通过普通对象v1调用的是普通函数,输出 5:通过常对象 v2调用的是 常成员函数,输出 3。 19 【正确答案】 A 【试题解析】 类模板是类的抽象,类是类模板的实例。在调用时,尖括号内指定实际的类型名,在编译时,编译系统就用 int取代类模板中的类型参数,这样就具体化了类模板。其中的参数为 4, 3。 20 【正确答案】 B 【试题解析】 由主函数 main 入手,定义 TestClass 型的常对象 a,然后调用对

23、象a中的成员函数 print()。因为在 C+中,如果一个对象被声明为常对象,则不能调用该对象中的非 const型的成员函数。所以,这里调用的是对象中的 const型成员函数 “void print()const”,输出为 print2。 21 【正确答案】 D 【试题解析】 由程序中的主函数 main 入手,定义了变量 x=5, y=2。然后调用fun函数,其中 a为引用地址,其改变会影响实参的改变。 fun函数中的 i=2定义为静态变量,有效到文件结束。所以主函数中第一个输出 x值为函数 fun 中的 a值,即 9。而 i=11。第二次调用 fun函数时, x=9, i=11,所以 a=9

24、+11+3=23。 22 【正确答案】 C 【试题解析】 构造函数的主要作用是对数据成员初始 化。在设计派生类的构造函数中,不仅要考虑派生类所增加数据成员的初始化,还应考虑基类中构造函数的初始化。子对象是对象中的对象,子对象的初始化是在建立派生类时通过调用派生类构造函数来实现。所以派生类构造函数的任务包括 3部分,对基类数据成员初始化;对子对象数据成员初始化;对派生类数据成员初始化。即本题选择选项C)。 23 【正确答案】 D 【试题解析】 由主函数 mian 入手,首先定义 TestClass 对象 ob1,调用构造函数后, i等于 1。 “int TestClass:i=0”语句中 i首先

25、赋值为 0,它是 静态函数可以被所有对象引用,当静态成员变量的值改变后,则在各对象中这个数据成员的值都同时改变。主函数中首先调用 fun 函数,其中又定义了对象 ob2,调用 getVal; i等于 2,输出。主函数 “obj*ob3=new TestClass;cout ob3- getVal();”动态分配, i等于 2,输出。 “delete ob3;”析构函数后, i等于 1,然后输出 1。即 221。 24 【正确答案】 C 【试题解析】 在建立派生类时,并不是简单地把基类的私有成员直接作为派生类的私有成员,把基类的公用成员直接作 为派生类的公用成员。涉及如何确定基类的成员在派生类中

26、的访问属性问题,不仅要考虑对基类成员所声明的访问属性,还要考虑派生类所声明的对基类的继承方式,根据这两个因素共同决定基类成员在派生类中的访问属性。所以本题选择选项 C)。 25 【正确答案】 C 【试题解析】 程序中的类 TestClass 为基类, TestClassl 为 TestClass 的派生类。由 main 主函数入手,定义 TestClassl 类型的对象 d1,参数值为 y。 TestClass1类继承 TestClass,所以主函数中 “TestClass1 dl(y);”语句首先调用“TestClass1(char c)cout c;”然后调用基类中的 “TestClass

27、()cout x;”输出 x,然后执行 “TestClass(char c)cout c; ”输出 y,即答案为 “xy”。 26 【正确答案】 D 【试题解析】 TestClass 为 TestClass1 的基类,在主函数 main 中定义 TestClass对象 b, *p。 TestClass1 对象 d, P指向 d,调用其 show函数。 “TestClass1(int i):TestClass(i+1), b(i)”语句中的 TestClass 基类参数为 2,所以 show 输出 2。 27 【正确答案】 B 【试题解析】 即使是共有继承,其私有成员仍为私有,无法访问。 28

28、【正确答案】 C 【试题解析】 纯虚函数是在声明虚函数时被 “初始化 ”为。的函数。定义的一般形式为: virtual 函数类型函数名 (参数列表 )=0。所以排除选项 A)、 B)、 D)。 29 【正确答案】 C 【试题解析】 false为逻辑常量,即假。选项 A)为 1小于 3并且 5小于 7,这个是真的;选 项 )B 是 2不大于 4也为真;选项 D)是 5大于 8或者 2 小于 8,只要有一个为真, D就为真,所以选项 D)也为真。选项 C)中 “其中,关键词 enum表示定义的是枚举类型,枚举类型名由标识符组成,而枚举元素表由枚举元素或枚举常量组成。其中如果默认,枚举类型从 0开始

29、赋值,本题中最大值为 8,那么它与其他值和的最大计算结果为 15,所以它的取值范围为 0 15。 31 【正确 答案】 A 【试题解析】 此题考查的是运算符的有关概念。 “*”是二元运算符,既可以用于间接访问也可用于两数相乘;而 “=”和 “*+”都是一元运算符。 32 【正确答案】 A 【试题解析】 此题考查的是乘法运算符的重载函数原型声明。因为操作的对象是类对象,所以重载函数的参数至少有一个是类对象。故选项 A)中两个参数都为double型是错误的。 33 【正确答案】 B 【试题解析】 题目中的两个函数参数个数不同,因此可以在同一程序中定义为重载函数。所以,选项 B)叙述正确。 34 【

30、正 确答案】 A 【试题解析】 在模板中,定义模板类型 template class T和 templatetypename T都是一样的,有时用 class 容易引起混淆,所以在标准化时引入了关键字 typename。 35 【正确答案】 B 【试题解析】 模板形参有 3种形式: typename参数名; class参数名;类型修饰参数名。前两种是等价的,在声明模板参数时,关键字 typename和 class 可以互换。 36 【正确答案】 耦合性 【试题解析】 衡量模块独立性的两个重要度量标准 是耦合性和内聚性。其中耦合性用于度量模块间互相连接的紧密程度。 37 【正确答案】 顺序查找

31、【试题解析】 在顺序查找与二分查找两种方法中,只能用顺序查找方法对有序线性链表进行查找,因为二分查找方法只适用于顺序存储的有序表。 38 【正确答案】 栈 【试题解析】 栈具有记忆作用。 39 【正确答案】 18 【试题解析】 根据二叉树的性质:在任意二叉树中,叶子结点总是比度为 2的结点多一个。因此,如果在一棵二叉树中有 17个度为 2的结点,则该二叉树中有17+1 18个叶子结点。 40 【正确答案】 变换型 【试题解析】 数据流图有两种典型的结构形式,它们分别是变换型和事务型。 41 【正确答案】 x =3|xl =10 【试题解析】 在 3, 10 之间的区间和之前的两个区间是相反的,

32、故可以写出一个基本的或表达式。 42 【正确答案】 基类成员 类对象成员 非类对象成员 【试题解析】 在派生类的初始化过程中,最先初始化的是基类对象,然后是其他类的对象成员,包括自身类对象的引用或指针,或其他类的对象,最后在是非类对象成员。析构的时候则反之。 43 【正确答案 】 Sample() 【试题解析】 尽管系统可以做很多默认的工作,但只是满足了逻辑上的最低要求,其实就是一些空的框架,虽然没有什么实际使用意义,但却可以满足编译器的最低要求。 44 【正确答案】 ios 【试题解析】 ios 是所有输入输出类的根基类。同时要知道, C+内置了四个输入轴出流对象,可以不用实例化就可以直接使

33、用,如 cin, cout, cerr, clog等。 45 【正确答案】 const 【试题解析】 coast在实际编程中用的比较多,在防止无意中对变量或对象的修改,往 往用 const进行限定,从而可以借助 C+的强大类型检查功能来防止在程序中带人错误。 46 【正确答案】 Base:97 【试题解析】 本题主要考察两个知识点,一是基类指针可以指向派生类对象,并可以访问派生类的所有成员。二是在函数重载牛进行隐式类型转换如 pd-f(a);系统到底调用哪个重载函数呢 ?实参即不是派生类中的形参,也不是基类中f 函数的形参类型。此时系统根据就近原则和从高优先级到低优先级的规则尝试隐式转换。单字

34、符更接近整数,故调用的是基类的 f 函数。 47 【正确答案】 sum=20 【试题解析】 本题考察静态数据成员在同类的不同对象间的数据传递功能。 Sum为所有对象的公共数据, M对象和 N对象分别对 sum进行累加,故结果为 20。 48 【正确答案】 0 【试题解析】 注意本题不同于基类的指针指向派生类对象。 Fun 函数的形参是Point基类的引用。在可以用基类对象的地方,均可以用派生类替代,完成基类的行为。反之,在使用派生类对象的地方却不能用基类对象代替,这是因为派生类中的某些行为在基类对象中是不存在的。本题调用的是 Point类对象的面积函数,其值永远为 0。 49 【正确答案】 (ch=filel.get()!=EOF 【试题解析】 需要填空的内容是判断文件是否达到结尾,可以使用流输入的 get函数获得当前字符,然后判断该字符是否是 EOF即可。 50 【正确答案】 x=10, y 20 【试题解析】 本题比较特殊,考察域作用符的使用规则。其实际含义是;指针先指向 x,然后指向 y,并利用该指针分别为 x和 y赋值。在使用过程中进行了作用域的限定。

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

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

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