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

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

1、国家二级( C+)笔试模拟试卷 118及答案与解析 1 为了培养良好的程序设计风格,下列描述中正确的是 ( A)程序应简单、清晰、可读性好 ( B)符号名的命名只要符合语法 ( C)充分考虑程序的执行效率 ( D)程序的注释可有可无 2 在最坏情况下,下列各排序方法的比较次数正确的是 ( A)冒泡排序为 n/2 ( B)冒泡排序为 n(n+1)/2 ( C)快速排序为 n/2 ( D)快速排序为 n(n-1)/2 3 按 “先进后出 ”原则组织数据的结构是 ( A)有序表 ( B)栈 ( C)队列 ( D)二 叉树 4 对下列二叉树进行中序遍历的结果是 ( A) ZBTYCPXA ( B) A

2、TBZXCYP ( C) ZBTACYXP ( D) ATBZXCPY 5 下列叙述中正确的是 ( A)数据的逻辑结构与存储结构必定是一一对应的 ( B)由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构 ( C)程序设计语言中的数组一般是顺序存储结构,因此,利用数组只能处理线性结构 ( D)以上三种说法都不对 6 下列叙述中正确的是 ( A)接口复杂的模块,其耦合程度一定低 ( B)耦合程度弱的模 块,其内聚程度一定高 ( C)耦合程度弱的模块,其内聚程度一定低 ( D)上述三种说法都不对 7 软件调试的目的是 ( A)发现错误 ( B)改正错误 ( C)改善软件的性能

3、 ( D)挖掘软件的潜能 8 下列叙述中正确的是 ( A)实体集之间一对一的联系实际上就是二一对应的关系 ( B)关系模型只能处理实体集之间一对一的联系 ( C)关系模型属于格式化模型 ( D)以上三种说法都不对 9 数据库概念设计中由分散到集中的设计方法是 ( A)视图设计 ( B)视图集成设计 ( C)集中式模式设计 ( D)分散式模式设计 10 下列叙述中正确的是 ( A)程序设计就是编制程序 ( B)程序的测试必须由程序员自己去完成 ( C)程序经调试改错后还应进行再测试 ( D)程序经调试改错后不必进行再测试 11 设 char型变量 x中的值为 10100111,则表达式 (2+x

4、) ( 3)的值是 ( A) 10101001 ( B) 10101000 ( C) 11111101 ( D) 1010101 12 以下叙述中不正确的是 ( A) C+语言中的文本文件以 ASCII码形式存储数据 ( B) C+语言中,对二 进制文件的访问速度比文本文件快 ( C) C+语言中,随机读写方式不适用于文本文件 ( D) C+语言中,顺序读写方式不适用于二进制文件 13 若已定义 int a 256,执行语句 cout hex a;的结果是 ( A) 100 ( B) 256 ( C) ffe ( D) ff 14 执行下列程序的结果是 main()float x 1, y;

5、y +x *+x; cout yend1; ( A) 9 ( B) 6 ( C) 1 ( D)程序有错误 15 下面程序的输出结果是 main()int a=15, b=21,m=0; switch(a%3) case 0, m+; break;case 1 :m+; switch(b%2) default: m+; case 0:m+ ;break; cout m end1 ( A) 1 ( B) 2 ( C) 3 ( D) 4 16 有以下程序 int f1(int x, int y) return x y? x:y;int f2(int x, int y) return x y? y:x

6、; main() int a=4,b=3,c=5,d,e,f; d=f1(a,B) ;d=f1(d,C) ; e=f2(a,B) ; e=f2(e,C) ; f=a+b+c-d-e; cout d “, “ f “, “ e end1;执行后输出结果是 ( A) 3,4,5 ( B) 5,3,4 ( C) 5,4,3 ( D) 3,5,4 17 有以下程序 void f(int x, int y) int t, if(x y)t=x; x=y; t;main() int a=4, b=3, c 5; f(a, B) ; f(a, C) ; f(b, C) ; cout a “, “ b“, “

7、 c end1; 执行后输出结果是 ( A) 3, 4, 5 ( B) 5, 3, 4 ( C) 5, 4, 3 ( D) 4, 3, 5 18 与数学式子 对应的 c+语言表达式是 ( A) 3*x n/(2*x-1) ( B) 3*x*n/(2*x-1) ( C) 3*pow(x, n)*(1/(2*x-1) ( D) 3*pow(n, x)/(2*x-1) 19 若有以下程序: main() int k=2, i 2, m; m=(k+ i*=k); coutm “, “ i end1; 执行后的输出结果是 ( A) 8, 6 ( B) 8, 3 ( C) 6, 4 ( D) 7, 4

8、20 设有定义: Class person int num; char name10; public: void init(int n, char*m); ; person std30则以下叙述不正确的是 ( A) std是一个含有 30个元素的对象数组 ( B) std数组中 的每个元素都是 person类的对象 ( C) std数组中的每个元素都有自己的私有变量 num和 name ( D) std数组中的每个元素都有各自的成员函数 init 21 以下叙述中不正确的是 ( A)一个类的所有对象都有各自的数据成员,它们共享函数成员 ( B)一个类中可以有多个同名的成员函数 ( C)一个类中

9、可以有多个构造函数、多个析构函数 ( D)在一个娄中可以声明另一个类的对象作为它的数据成员 22 以下关于私有和保护成员的叙述中,不正确的是 ( A)私有成员不能被外界引用,保护成员可以 ( B) 私有成员不能被派生类引用,保护成员在公有继承下可以 ( C)私有成员不能被派生类引用,保护成员在保护继承下可以 ( D)私有成员不能被派生类引用,保护成员在私有继承下可以 23 友元函数的作用是 ( A)提高程序的效率 ( B)加强类的封装性 ( C)实现数据的隐蔽性 ( D)增加成员函数的种类 24 使用静态数据成员的好处不包括 ( A)可以节省内存空间 ( B)是为了解决数据共享问题 ( C)可

10、以直接用类名来引用 ( D)可以提高运算速度 25 以下不能正确创建输出文件对象并使其与磁盘文件相 关联的语句是 ( A) ofstream myfile: myfile, open(“d: ofile txt“); ( B) ofstream *myfile=new ofstream; myfile- open(“d; ofile.txt“); ( C) ofstream myfile(“d: ofile.txt“); ( D) ofstream *myfile new (“d: ofile.txt“); 26 有关析构函数的说法中错误的是 ( A)析构函数有且只有一个 ( B)析构函数无任

11、何函数类型 ( C)析构函数 和构造函数一样可以有形参 ( D)析构函数的作用是在对象被撤销时做清理工作 27 下列运算符中,不能重载的是 ( A) ?: ( B) + ( C) - ( D) 28 已知类 A中有公用数据成员 B *b;其中 B为类名。则下列语句错误的是 ( A) A(): d(new B) B) A(const A &oo): d(new ( B) *d= *oo.d; ( C) A(D) ( D) A()delete d; 29 以下有关析构函数的叙述中错误的是 ( A)一个类只能定义一个析构 函数 ( B)析构函数和构造函数一样可以有形参 ( C)析构函数不允许有显式的

12、返回值 ( D)析构函数名前必须冠有符号 “ ” 30 在 C+语言程序中 ( A)函数的定义可以嵌套,但函数的调用不可以嵌套 ( B)函数的定义和调用均可以嵌套 ( C)函数的定义和调用均不可以嵌套 ( D)函数的定义不可以嵌套,但函数的调用可以嵌套 31 以下叙述中不正确的是 ( A)在类的定义中通常是用数据成员描述对象的属性,用成员函数描述对象的行为 ( B)类的一个成员只能具有一种访问控制属性 ( C)构造函数和析构 函数是特殊的成员函数,因此不允许重载 ( D)通过对象只能访问类的公有成员 32 磁盘文件操作中,打开磁盘文件的访问方式中以追加方式打开文件的 ( A) in ( B)

13、out ( C) app ( D) ate 33 假定 AB为一个类,则执行 AB x;语句时将自动调用该类的 ( A)有参构造函数 ( B)无参构造函数 ( C)拷贝构造函数 ( D)赋值重载函数 34 通常初始化拷贝构造函数的参数是 ( A)某个对象名 ( B)某个对象的成员名 ( C)某个对象的引用名 ( D)某个对象的指针名 35 实现运行时的多态性用 ( A)重载函数 ( B)构造函数 ( C)析构函数 ( D)虚函数 36 算法的基本特征是可行性、确定性、【 】和拥有足够的情报。 37 在长度为 n的有序线性表中进行二分查找。最坏的情况下,需要的比较次数为【 】。 38 在面向对象

14、方法中,类之间共享属性和操作的机制称为【 】。 39 通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为【 】。 40 数据库设计分为以下 6个设计阶段:需求分析阶段、【 】、逻辑设计阶段、物理设计阶段、实施阶段、运行和维 护阶段。 41 在 C+类中,默认的数据成员的访问权限是【 】。 42 C+中的多态分为运行时的多态性及【 】时的多态性。 43 构造函数的主要作用是【 】。 44 标识虚函数的关键字是【 】。 45 类的静态成员的定义说明语句不能出现在类的外部,而且只能定义【 】次。 46 已知 p是一个指向类 A公有数据成员的指针, a是类 A的一个对象,如果要给p所指向的

15、成员赋值为 5,语句应写为【 】。 47 在 C+中,动态创建对象可以使用【 】操作符来完成。 48 在 C+中,若要使派生 类中的某些成员不可见,主要是指基类中的【 】成员。 49 程序的输出结果是【 】。 #include iostream using namespace std; class A int x; public: A(int x=1): x(x)cout x; ; void main() A a, b(2), c(3); 50 程序的输出结果是【 】。 #include iostream using namespace std; class A public: A()a=b=

16、2; A(int i, int j)a=i; b=j; void display()cout a b; private: int a, b; ; void main() A m, n(4, 8); m display(); n display(); 国家二级( C+)笔试模拟试卷 118答案与解析 1 【正确答案】 A 【试题解析】 良好的程序设计风格主要包括设计的风格、语言运用的风格、程序文本的风格和输入输出的风格。 设计的风格主要体现在三个方面:结构要清晰;思路要清晰,在设计程序时应遵循 “简短朴实 ”的原则,切忌卖弄所谓的 “技巧 ”。 语言运用的风格主要体现在两个方面;选择合适的程序设

17、计语言以及不要滥用语言中的某些特色。特别耍注意,尽量不用灵活性大、不易理解的语句成分。 程序文本的风格主要体现在四个方面:注意程序文本的易读性;符号要规范化;在程序中加必要的注释;在程序中要合理地使用分隔符等。 输入输出的风格主要体现在三个方面;对输出的数据应该加上必要的说明;在需要输入数据时,应该、给出必要的提示,以适当的方式对输入数据进行检验,以确认其有效性。 总之,程序设计的风格应该强调简单和清晰,程序必须是可以理解的,强调 “清晰第一,效率第二 ”。由上所述,符号名的命名不仅要符合语法,而且符号名的命名应具有一定实际含义,以便于对程序功能的理解。因此,选项 B 中的说法是错误 的。 由

18、于程序设计的风格强调的是 “清晰第一,效率第二 ”,而不是效率第一。因此,选项 C中的说法也是错误的。 程序中的注释部分虽然不是程序的功能,计算机在执行程序时也不会执行它,但不能错误地认为注释是可有可无的部分在程序中加入正确的注释能够帮助读者理解程序,注释是提高程序可读性的重要手段。因此,选项 D中的说法也是错误的。 2 【正确答案】 D 【试题解析】 在最坏情况下,冒泡排序的比较次数为 n(n-1/2;快速排序的比较次数也为 n(n-1)/2。 3 【正确答案】 B 【试题 解析】 栈是按 “先进后出 ”原则组织数据的结构,队列是按 “先进先出 ”原则组织数据的结构;而有序表与二叉树均不是。

19、 4 【正确答案】 C 【试题解析】 按照二叉树中序遍历的方法:在访问根结点、遍历左子树与遍历右手树这三者中:首先遍历左子树,然后访问根结点,最后遍历右子树;并且,在遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。对本题中的二叉树进行中序遍历的结果应是: TZBACYXP。 5 【正确答案】 D 【试题解析】 一般来说,一种数据的逻辑结构根据需要可以表示成多种存 储结构,因此,数据的逻辑结构与存储结构不一定是一一对应的。选项 A中的说法是错误的。虽然计算机的存储空间是向量式的存储结构,但由于一种数据的逻辑结构根据需要可以表示成多种存储结构,例如,线性链表是线性表的链式存储结

20、构。一般来说,在线性表的链式存储结构中,各数据结点的存储序号是不连续的,并且各结点在存储空间中的位置关系与逻辑关系也不一致。在线性链表中,各数据元素之间的前后件关系是由各结点的指针域来指示的。因此,数据的存储结构不一定是线性结构。选项 B 中的说法也是错误的。虽然程序设计语言中的数组一般是顺序存储结构, 但是,利用数组也能处理非线性结构。例如,满二叉树与完全二叉树是非线性结构,但对于满二叉树与完全二叉树来说,根据完全二叉树的性质 6,可以按层序进行顺序存储,即利用程序设计语言中的数组来存储,这样,不仅节省了存储空间,又能方便地确定每一个结点的父结点与左右子结点的位置。对于一般的二叉树来说,也可

21、以将二叉树中每一个结点的左指针、右指针以及数据域分别用三个数组中的对应元素来存储,即实际上也是利用了程序设计语言中的数组来处理二叉树这样的非线性结构。选项 C中的说法也是错误的。综上所述,选项 A、 B 与 C中的说法都是错误的。 6 【正确答案】 B 【试题解析】 影响模块之间耦合的主要因素有两个:一是模块之间的连接形式二是模块接口的复杂性。一般来说,接口复杂的模块,其耦合程度要比接口简单的的模块强。因此,选项 A中的说法是错误的。耦合和内聚是一个问题的两个方面,耦合程度弱的模块,其内聚程度一定高。因此,选项 C和 D中的说法也是错误的;选项 B中的说法是正确的。 7 【正确答案】 B 【试

22、题解析】 软件调试的目的是改正程序中的错误。 8 【正确答案】 D 【试题解析】 实体集之间一对一的联系不一定是一一对 应的关系。例如,在一个教室中,实体集 “学生 ”与实体集 “座位 ”之间是一对一的联系。因为实体集 “学生 ”中的每一个学生最多与实体集 “座位 ”中的一个座位有联系 (学生坐在该座位上 );并且实体集 “座位 ”中中的每一个座位也最多与实体集 “学生 ”中的一个学生有联系(座位上坐着该学生 )。但该教室中的学生与座位之间不一定是一一对应的关系,因为有可能某些座位是空的,没有学生去坐。因此,选项 A中的说法是错误的。在关系模型中,由于使用表格数据来表示实体之间的联系,因此,可

23、以直接描述多对多的实体联系。因此,选项 B 中的说法也是错误的。关 系模型是与格式化模型完全不同的数据模型,它与层次模型、网状模型相比有着本质的区别。关系模型是用表格数据来表示实体本身及其相互之间的联系,它是建立在数学理论基础上的。因此,选项 C中的说法也是错误的。 9 【正确答案】 B 【试题解析】 数据库概念设计中由分散到集中的设计方法是视图集成设计。 10 【正确答案】 C 【试题解析】 程序设计并不单指编程,而是有很多步骤,编程只是其中的一步,选项 A是错误的,程序测试工作应避免由程序员自己去完成,选项 B也是错误的;程序经调试改错后还应进行再测试,选 项 C是正确的,选项 D是错误的

24、。 11 【正确答案】 D 【试题解析】 本题考查二进制操作的几种形式,需要考生熟练掌握整数向二进制的转换和求反、异或等操作。 12 【正确答案】 C 【试题解析】 本题考查 C+语言中文件的概念,包括二进制文件和文本文件,对不同的文件类型采用不同的读写方式。 13 【正确答案】 A 【试题解析】 本题考查流操作中格式的控制, hex的作用是将随后的输出数按照十六进制形式输出。 14 【正确答案】 A 【试题解析】 本题比较简单,考查自增运算 符的运算规则以及运算符优先级的知识点。自增运算符的优先级高于乘法运算符的优先级。 15 【正确答案】 A 【试题解析】 本题考查 switch 语句的嵌

25、套。实际上,只要考生按照顺序进行分析可以发现里层嵌套的 switch 语句根本不用分析,因为执行流程根本不能到达那里。 16 【正确答案】 C 【试题解析】 本题只需要考生按照执行顺序分析即可得出正确答案为 C。 17 【正确答案】 D 【试题解析】 考生根据分析可以得知 f函数的功能是交换两个变量的值。表明看起来,在 main 函数中,使用三 次 f函数完成三个变量的交换。真的如此么 ?只要考生注意到 f函数采用值传递,而值传递的缺点就是不会改变形参的值,因此,上述操作根本无法改变原来三个变量的值 !故三个变量的值依然保持不变。 18 【正确答案】 C 【试题解析】 本题考查考生将数学表达式

26、翻译成 C+语句的能力。 19 【正确答案】 C 【试题解析】 首先进行括号内的运算,注意赋值表达式是从右向左进行的。因此,只要考生细心运算就可以得到正确答案为 C。 20 【正确答案】 D 【试题解析】 首先, std是对象数蛆,里面有 30个对象,每个对象都有自己的私有数据成员,由于成员函数是公有的,在内存中存在一份即可,各个对象都可以使用。 21 【正确答案】 C 【试题解析】 本题考查类的基本概念。构造函数和析构函数比较特殊,析构函数只有一个。 22 【正确答案】 A 【试题解析】 私有成员和保护成员都不能被外界引用,这与继承方式无关。 23 【正确答案】 A 【试题解析】 友元函数的

27、引入是为了提高程序的效率,减少通过接口访问的限制,但却破坏了类的封装性。 24 【正确答案】 D 【试题解析】 静态 成员在一个类中只保存一份,供类的不同对象共享,因此它可以节省内存空间。由于静态成员不属于某个对象,因此引用时必须用类名来标识。 25 【正确答案】 D 【试题解析】 本题考查文件对象的创建方法。可以直接定义文件对象,也可以用new 来动态生成。很明显,选项 D中使用 new 的方式是错误的。 26 【正确答案】 C 【试题解析】 本题考查析构函数的有关特性。考生不仅要熟记析构函数和构造函数的特点,还要深刻理解它们的内插,只有这样才可以灵活运用。 27 【正确答案】 A 【试题解

28、析】 在 C+中, ?:是唯一一个三目运算符,不能被重载。 28 【正确答案】 C 【试题解析】 首先考生要能判断出四个选项是构造函数和析构函数,其中 d 是类A的一个需要初始化的数据成员,且是一个指针。在初始化时,必须指明类 B 的某对象的地址,所以, new B可以完成这个功能而折构函数不能带参数,这是常识性的知识,因此正确答案为 C。 29 【正确答案】 B 【试题解析】 析构函数不能有形参。 30 【正确答案】 D 【试题解析】 本题考查函数的定义,调用及其嵌套之间的关系。 31 【正 确答案】 C 【试题解析】 构造函数是可以重载的,从而保证了类的多态性。 32 【正确答案】 C 【

29、试题解析】 根据选项的含义,可知 app 表示追加的含义。可以选定正确答案为C。 33 【正确答案】 B 【试题解析】 当没有显式调用指定形式的构造函数,则系统自动调用无参构造函数,如果没有为类指定此构造函数,则系统自动为其生成一个最简单的无参构造函数。 34 【正确答案】 C 【试题解析】 拷贝构造函数顾名思义,就是对两个对象进行拷贝生成。因此,其参数是指向某个对象的指针。 35 【正确答案】 D 【试题解析】 多态性是通过虚函数来完成的,不同类层次上的类通过虚函数,可以做到运行时根据指针的指向确定调用哪个对象的成员函数。 36 【正确答案】 有穷性 【试题解析】 算法的基本特征是可行性、确

30、定性、有穷性和拥有足够的情报。 37 【正确答案】 log2n 【试题解析】 在长度为 n 的有序线性表中进行二分查找。最坏的情况下,需要的比较次数为 log2n。 38 【正确答案】 继承 【试题解析】 在面向对象方法中,类之间共享属性和操作的机制称为继承。 39 【正确答案】 软件生命周期 【试题解析】 通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。 40 【正确答案】 数据库概念设计阶段 【试题解析】 数据库设计分为以下六个设计阶段:需求分析阶段、数据库概念设计阶段、逻辑设计阶段、物理设计阶段、实施阶段、运行和维护阶段。 41 【正确答案】 私有访问权限 【

31、试题解析】 在 C+类中,默认的数据成员的访问权限是私有访问权限。 42 【正确答案】 编译 【试题解析】 C+中的多态分为编译时的多 态性及运行时的多态性。 43 【正确答案】 初始化对象成员 【试题解析】 构造函数的主要作用是初始化对象成员。 44 【正确答案】 virtual 【试题解析】 virtual 关键字。 45 【正确答案】 1 【试题解析】 静态成员只能初始化 1次。 46 【正确答案】 a. *p=5; 【试题解析】 由于是公有成员,类对象可以直接访问类的公有成员 *号表示指针所指向的内容。 47 【正确答案】 new 【试题解析】 与 C语言不同, C+提倡使用 new 操作符来 动态创建对象。 48 【正确答案】 私有 【试题解析】 通过在类中设置私有权限,实现数据成员的封装。 49 【正确答案】 123 【试题解析】 a对象使用和默认的构造函数, b 对象使用 2来初始化对象 c对象使用 3来初始化对象,输出相应的值后,结果变为 123。 50 【正确答案】 2248 【试题解析】 m对象使用和默认的构造函数,其 a与 b变量的值均为 2;而 n 变量使用 4和 8来初始化程序的变量, a, b的值为 4和 8,依次输出的结果为2248。

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

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

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