ImageVerifierCode 换一换
格式:DOC , 页数:23 ,大小:93KB ,
资源ID:502684      下载积分:2000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-502684.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文([计算机类试卷]国家二级(C++)笔试模拟试卷220及答案与解析.doc)为本站会员(medalangle361)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

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

1、国家二级( C+)笔试模拟试卷 220及答案与解析 1 下列选项中不属于软件生命周期开发阶段任务的是 ( )。 ( A)软件测试 ( B)概要设计 ( C)软件维护 ( D)详细设计 2 3 4 下面关于虚函数的表述中正确的是 ( )。 ( A)虚函数不能声明为另一个类的友元函数 ( B)派生类必须重新定义基类的虚函数 ( C)如果在重定义虚函数时使用了保留字 virtual,那么该重定义函数仍是虚函数 ( D)虚函数不能够声明为静态函数 5 若某二叉树 的前序遍历访问顺序是 abdgcefh,中序遍历访问顺序是 dgbaechf,则其后序遍历的结点访问顺序是 ( A) bdgcefha (

2、B) gdbecfha ( C) bdgaechf ( D) gdbehfca 6 数据库管理系统 DBMS中用来定义模式、内模式和外模式的语言为 ( A) C ( B) Basic ( C) DDL ( D) DML 7 为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为 ( A) PAD图 ( B) N-S图 ( C)结构图 ( D)数据 流图 8 下列数据结构中,按先进后出原则组织数据的是 ( A)线性链表 ( B)栈 ( C)循环链表 ( D)顺序表 9 结构化程序设计的 3种结构是 ( A)顺序结构、选择结构、转移结构 ( B)分支结构、

3、等价结构、循环结构 ( C)多分支结构、赋值结构、等价结构 ( D)顺序结构、选择结构、循环结构 10 在设计程序时,应采纳的原则之一是 ( )。 ( A)不限制 goto语句的使用 ( B)减少或取消注解行 ( C)程序越短越好 ( D)程序结构应有助于读者理解 11 下列函数的运行结果是 ( )。 #include iostream.h int add(int a,int b); void main() extern int x,y; cout add(x,y) endl; int x(20),y(5); int add(int a,int b) int s=a+b; return s;

4、( A) 25 ( B) 30 ( C) 20 ( D) 15 12 下列定义中 p指向的 地址可更改,但 * p不能够更改的是 ( A) const int * p; ( B) int * const p; ( C) const int * const p; ( D) int * p; 13 有如下程序: #include #include using std: cout; class Point public: friend double distance(const Point static int y(10); if(n 0) +x; +y; cout x “,“ y endl; vo

5、id main() int m(1); f(m), 则该程序的输出结果是【 】 46 已知递归函数 f的定义如下: int f(int n) if(n =1)return 1; /递归结束情况 else retulil n*f(n-2); /递归 则函数调用语句 f(5)的返回值是【 】。 47 在成员函数声明的前面加上关键词【 】修饰,即把该函数声明为虚函数。 48 有以下程序: #include iostream using namespace std; class Base int a; public: Base(int x) a-x; void show() cout a; ; cla

6、ss Derived : public Base int b; public: Derived 49 若将一个二元运算符重载为类的成员函数,其形参个数应该是【 】个。 50 请将如下程序补充完整,使得输出结果为: bbaa #include iostream using namespace std; class A public: 【 】 cout “aa“; ; class B: public A public: B() cout “bb“; ; int main () B *p= new B; delete p; return 0; 国家二级( C+)笔试模拟试卷 220答案与解析 1 【

7、正确答案】 C 【试题解析】 软件的生命周期可分为软件定义、软件开发及软 件运行维护 3个阶段。其中软件定义阶段的主要工作有可行性研究与计划制定和需求分析等;软件开发阶段的主要工作有概要设计、详细设计和测试等;软件运行维护阶段的主要工作是软件的运行及后期的维护等。 2 【正确答案】 B 3 【正确答案】 A 4 【正确答案】 D 5 【正确答案】 D 【试题解析】 前序遍历的第一个结点 a为树的根结点;中序遍历中 a的左边的结点为 a的左子树, a右边的结点为 a的右子树;再分别对 a的左右子树进行上述两步处理,直到每个结点都找到正确的位置。 6 【正确答案】 C 【试题解析】 选项 A)、选

8、项 B)显然不合题意。数据定义语言 (Data Definition Language,简称 DDL)负责数据的模式定义与数据的物理存取构建;数据操纵语言 (Data Manipulation Language,简称 DML)负责数据的操纵,包括查询及增、删、改等操作。 7 【正确答案】 B 【试题解析】 常见的过程设计工具有:程序流程图、 N-S图、 PAD 图和 HIPO图。其中,为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为 N-S 图。注意:其他常用算法描述工具的概念。 8 【正确答案】 B 【试题解析】 栈是限定在一端进行插入与删除的

9、线性表。在栈中,允许插入与删除的一端称为栈顶,而不允许插入与删除的另一端称为栈底。栈顶元素总是最后被插入的元素,从而也是最先能被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素,即栈是按照 “先进后出 ”或 “后进先出 ”的原则组织数据的。注意:队列组织数据的原则是 “先进先出 ”或 “后进后出 ”。注意:数据结构中,栈和队列组织数据的原则。 9 【正确答案】 D 【试题解析 】 顺序结构、选择结构和循环结构 (或重复结构 )是结构化程序设计的3种基本结构。 10 【正确答案】 D 【试题解析】 在设计程序时,应采纳的原则之一是程序结构应有助于读者理解。 11 【正确答案

10、】 A 【试题解析】 由主函数 main 入手,定义外部变量 x和 y,调用函数 add。因为x, y为外部变量,所以 “int x(20),y(5);”的赋值在 add 也是有效的,即 add函数的运算结果为 25。 12 【正确答案】 A 【试题解析】 const int * p;是只能改变指针地址, int * const p;是只能改变 * p的内容, const int * const p;是指针的地址和 * p的内容都不能改变, int * p;是两者都能改变。 13 【正确答案】 A 14 【正确答案】 A 【试题解析】 p 的类型和函数返回值的类型不一致,函数返回类型是 cha

11、r,而 p是 char *,编译出错。 15 【正确答案】 A 16 【正确答案】 D 17 【正确答案】 C 18 【正确答案】 D 19 【正确答案】 A 【试题解析】 C+语言中和 运算符都是友元函数重载,分别用于输出和输入。注意:运算符 只能作为成员函数重载。 20 【正确答案】 D 【试题解析】 通常,引用一个数组元素可以用下标法,如 ap-a形式,或指针法,如 *(&ai)的形式。本题中 a9=9, a10显然超出了数组范围,注意,数组的下标是从 0开始的。 21 【正确答案】 C 【试题解析】 本题考核派生类的构造函数。在 C+中,构造函数不能被继承,因此,派生类的构造函数必须通

12、过调用基类的构造函数来初始化基类子对象。所以,在定义派生类的构造函数时 ,除了对自己的数据成员进行初始化外,还必须负责调用基类构造函数使基类的数据成员得以初始化。如果派生类中还有子对象,还应包含对子对象初始化的构造函数。 22 【正确答案】 A 【试题解析】 本题考核对数组的引用。在 C+语言中,数组的下标是从 0开始的,最大的下标值比所定义的数组长度的值小 1。同时需要注意的是, C+语言中,编译和执行时并不检查数组下标是否越界。因此 value30在编译阶段是正确的,但是在运行时会出现错误。 23 【正确答案】 C 【试题解析】 本题考核友元函数的应用。分 析程序:类 point中定义了两

13、个私有成员 x和 y,以及一个友元函数 distance。从而,函数 distance可以访问类 point中的任何成员。在函数 distance中,返回值为 sqrt(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)。由此可知,函数 distance的功能是计算 a、 b两点之间的距离。在主函数 main 中,先定义两点: p1(1, 2)和 p2(5, 2)。然后调用函数 distance计算两点之间的距离为 4,所以程序最后输出为 4。 24 【正确答案】 B 【 试题解析】 本题考核拷贝构造函数的概念。拷贝初始化构造函数实际上也是构造函数,它是在初始化时被调

14、用,将一个已知对象的数据成员的值拷贝给正在创建的另一个同类的对象。拷贝构造函数具有的特点是:拷贝构造函数也是一种构造函数,因此函数名与类相同,并且不能指定函数返回类型;只有一个参数,是对同类的某个对象的引用; 每一个类中都必须有一个拷贝构造函数。如果类中没有声明拷贝构造函数,编译器会自动生成一个具有上述形式的公有的拷贝构造函数。 25 【正确答案】 B 【试题解析】 此类题比较典型,考生应该加以注意。 break 语句将使程序从当前的循环语句 (do、 while和 for)内跳转出来。 switch 语句中也可以用 break 语句终止当前 switch 语句的执行。所以选项 A是错误的。

15、break 和 continue都是五条件跳转语句,所以选项 C是错误的。 break 语句是中断循环,继续执行循环后面的语句。 continue类似于 break,但它不是结束循环,而是结束循环语句当前的一次循环,继续执行下一次循环。所以选项 D是错误。 26 【正确答案】 A 【试题解析】 本题考核函数重载这个知识点。函数 fun 有两种实现: 第 1种实现中,有两个 int型形参,第 2个实现中,是 1个 int型形参。由于这两种实现方式中形参的个数不同,形成了函数的重载。在主函数中,由于传递给函数 fun()的实参为 1个整型变量 a,所以调用函数 fun()的第 2中实现,输出 1。

16、 27 【正确答案】 A 28 【正确答案】 A 【试题解析】 C+语言中析构函数是在程序退出不用该类的对象时进行调用。 29 【正确答案】 C 【试题解析】 基类的私有成员在派生类中是隐藏的,只能在基类内部访问,派生类中的成员不能访问基类中的私有成员,可以访 问基类中的公有和受保护的成员。 30 【正确答案】 B 【试题解析】 首先,当 i=0时,数组中的位置是 a2)0=7,当然,如果用排除法的话,就不用考虑后面的循环了,因为在 4个选项中,第 1个数为 7的选项只有B。本题执行第 2次循环时, i的值为 1,则 cout函数中的数组指向为 a11=5,依次循环,可求出答案。 31 【正确

17、答案】 C 【试题解析】 本题考查的是考生对引用的掌握, ref 实际上就是变量 num的别名,所以 ref=ref+2 时, num已经变成了 3。 32 【正确答案】 C 【试题解析】 在建立派生类时,并不是简单地把基类的私有成员直接作为派生类的私有成员,把基类的公用成员直接作为派生类的公用成员。涉及如何确定基类的成员在派生类中的访问属性问题,不仅要考虑对基类成员所声明的访问属性,还要考虑派生类所声明的对基类的继承方式,根据这两个因素共同决定基类成员在派生类中的访问属性。所以本题选择选项 C)。 33 【正确答案】 C 【试题解析】 类和结构体有着密切的血缘关系。类可以看做是将动作和数据都

18、封装的结构体,当然结构体本身是没有动作的。另外,结构体中的成员对外界 访问是没有限制的,而类的成员却是有不同的访问级别限制。 34 【正确答案】 A 【试题解析】 子类型关系不可逆。 35 【正确答案】 D 【试题解析】 本题考查了类的定义。一个类的常数据成员的初始化只能在成员初始化列表中进行,所以选项 A不正确。常成员函数不能更新对象的数据成员,所以选项 B 不正确。静态成员函数可以直接访问类中说明的静态成员,但不能直接访问类中说明的非静态成员,所以选项 C也不正确。故应该选择 D。 36 【正确答案】 程序调试 37 【正确答案】 2 38 【正确答 案】 流成员函数 39 【正确答案】

19、n 【试题解析】 在长度为 n 的线性表中查找一个表中不存在的元素,需要的比较次数为 n。 40 【正确答案】 白盒 【试题解析】 黑箱测试是根据程序规格说明所规定的功能来设计测试用例,它不考虑程序的内部结构和处理过程。常用的黑箱测试技术分为等价类划分、边界分析、错误猜测及因果图等。白盒测试的墓本原则是:保证所测模块中每一独立路径至少执行一次;保证所测模块所有判断的每一分支至少执行一次;保证所测模块每一循环都在边界条件和一般条件下至少各执行一次;验证所有内 部数据结构的有效性。白盒测试的主要方法有逻辑覆盖和基本路径测试等。 41 【正确答案】 privale 【试题解析】 此题考查的是类的继承

20、方式。类的继承方式有公有、保护和私有三种。分析题目可以得到,若横线处填入的是口 rivate,即类 Derived1 私有继承类Base将导致 objD m和 obiD n 出错,符合题目要求。 42 【正确答案】 成员初始化列表 【试题解析】 派生类是基类的具体化,而基类则是派生类的抽象。派生类也就是基类的具体实现,所以对基类数据成员的初始化是在派生类的构造函数 中成员初始化列表执行的。 43 【正确答案】 2 【试题解析】 数组名实际上是数组第一个元素的地址。对于本题 *q=x,将 x0的地址赋予 q, cout*(+q)endl;后 q 便指向数组 x的第二个元素。所以输出2。 44 【

21、正确答案】 *str=NULL 45 【正确答案】 6, 11 46 【正确答案】 15 47 【正确答案】 virtual 【试题解析】 说明虚函数的方法为: virtual类型说明符函数名 (参数表 ) 其中,被关键词 virtual说明的函数称为虚函数。 48 【正确答案】 2 【试题解析】 本例程序中类 Derived是从基类 Base公有继承来的。主函数中定义了基类对象 b 和一个基类指针 pb,又定义了派生类 Derived 的对象 d。由于Derived是 Base的子类型,因此可以将派生类 Derived的对象 d的地址赋值给指向基类 Base的指针 pb,但这时指针 pb只能

22、使用从基类 Base继承的成员。所以通过对象指针 pb调用的 show 函数是基类的成员函数 show(),从而输出基类私有数据成员 a的值 2。 49 【正确答案】 1 【试题解析】 本题考查的知识点是:运算符重载。当运算符重载为类的成员函数时,第一操作数就是对象本身,并不显式地出现在参数表中。或者换句话说,第一操作数仅以 this 指针的形式隐含存在于参数表中。因此,对于一元运算符参数表是空的;对于二元运算符参数表中只有一个参数,它代表第二操作数。故本题应该填 1。 50 【正确答案】 A() 【试题解析】 本题考查的知识点是:类的构造与析构。本题要求的输出结果中包含 aa,所以基类 A中填空位置处的函数一定要被执行。但主函数中仅仅创建了一个 B 类对象,然后释放 了它,并没有调用什么函数。所以可以肯定填空处一定是要定义基类的构造或者析构函数。如果定义的是构造,那么盼肯定在 new操作的时候就会被输出,而下面的 bb 是在析构函数中,会在 delete时被输出。故可肯定应填入基类 A的析构函数定义: A()。

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