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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

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

1、国家二级( C+)机试模拟试卷 7及答案与解析 一、选择题 1 线性表常采用的两种存储结构是 ( )。 ( A)散列方法和索引方式 ( B)链表存储结构和数组 ( C)顺序存储结构和链式存储结构 ( D)线性存储结构和非线性存储结构 2 软件需求分析阶段的工作,可以分为四个方面:需求获取、编写需求规格说明书、需求评审和 ( )。 ( A)阶段性报告 ( B)需求分析 ( C)需求总结 ( D)都不正确 3 在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是 ( )。 ( A)需求分析 ( B)详细设计 ( C)软件设计 ( D)概要设计 4 对建立良好的程序设计风格,下

2、面描述正确的是 ( )。 ( A)程序应简单、清晰、可读性好 ( B)符号名的命名只要符合语法 ( C)充分考虑程序的执行效率 ( D)程序的注释可有可无 5 下列工具中,不属于结构化分析的常用工具的是 ( )。 ( A)数据流图 ( B)数据字典 ( C)判定树 ( D) N S图 6 在软件生产过程中,需求信息的来源是 ( )。 ( A)程序员 ( B)项目经理 ( C) 设计人员 ( D)软件用户 7 对关系 S和 R进行集合运算,结果中既包含 S中的所有元组也包含 R中的所有元组,这样的集合运算称为 ( )。 ( A)并运算 ( B)交运算 ( C)差运算 ( D)积运算 8 设有关键

3、码序列 (Q, G, M, Z, A, N, B, P, X, H, Y, S, T, L, K, E),采用堆排序法进行排序,经过初始建堆后关键码值 B在序列中的序号是 ( )。 ( A) 1 ( B) 3 ( C) 7 ( D) 9 9 数据库的故障恢复一般是由 ( )来执行恢复。 ( A)电脑用户 ( B)数据 库恢复机制 ( C)数据库管理员 ( D)系统普通用户 10 下列选项中,不属于数据模型所描述的内容的是 ( )。 ( A)数据类型 ( B)数据操作 ( C)数据结构 ( D)数据约束 11 下面关于面向对象的程序设计方法中,正确的是 ( )。 ( A) “多态性 ”是指对象的

4、状态根据运行的要求进行变化 ( B) “封装性 ”是指将不同类型的数据结合在一起作为一个整体来处理 ( C)在面向对象的程序设计中,结构化程序设计方法仍有着重要作用 ( D)基类的私有成员在派生类的对象中不可访问,也不占内存 空间 12 下列关于函数模板的定义中,合法的是 ( )。 ( A) template classT abs(T z)return zT abs(T z)return zabs(T z)return z using namespace std; int m=5: int main() int m=3: m+: : m+: cout void main() int x=3。

5、Y=3: switch(x 2) case 1: switch(Y) case 0: cout using namespace std; class Base public: virtual void func 1 0coutfimcl(); P一 func20; return 0: 运行此程序,屏幕上将显示输出 ( A) Derived 1 Base 2 ( B) Base 1 Base 2 ( C) Derived 1 Derived 2 ( D) Base 1 Derived 2 29 下面关于友元的说法中错误的是 ( )。 ( A)若类 A是类 B的友元,那么类 B也是类 A的友元 (

6、 B)友元关系不能被继承 ( C)若函数 fun被说明为类 A的友元,那么在 fun中可以访问类 A的私有成员 ( D)若类 A是类 B的友元,那么类 A的所有成员函 数都是类 B的友元 30 运行以下的程序代码,结果是 ( )。 #include using namespace std; int main() intx=5; int*q=&x; int&y=x; y+; cout using namespace std; class TestClass public: TestClass(int n)number=n; 拷贝构造函数 TestClass(TestClass other)num

7、ber=other number; ) TestClass() private: int number; ; TestClass fun(TestClass p) TestClass temp(p); return temp; int main() TestClass obj 1(10), obj2(0); TestClass obj3(obj 1); obj2=fun(obj3); return 0: 程序执行时, TestClass类的构造函数被调用的次数是 ( )。 ( A) 2 ( B) 3 ( C) 4 ( D) 5 33 语句 ofstream outf(“TEST DAT”,io

8、s base: app);的功能是建立流对象 outf,并试图打开文件 TEST DAT与 outf关联,而且 ( )。 ( A)如果文件存在,打开失败;如果文件不存在,建立一个新文件 ( B)如果文件存在,将文件指针定位于文件首;如果文件不存在,打开失败 ( C)如果文件存在,将文件指针定位于文件尾; 如果文件不存在,建立一个新文件 ( D)如果文件存在,将其置为空文件;如果文件不存在,打开失败 34 下面的类定义中,如果要为其添加一个析构函数,对于析构函数定义正确的是( )。 class TestClass private: int a; public: TestClass(int giv

9、a a=0)a=give_a; ) ( A) -void TestClass() ( B) TestClass void() ( C) void TestClass() ( D) TestClass() 35 下面关于虚函数的表述中正确的是 ( )。 ( A)虚函数不能声明为另一个类的友元函数 ( B)派生类必须重新定义基类的虚函数 ( C)如果在重定义虚函数时使用了保留字 virtual,那么该重定义函数仍是虚函数 ( D)虚函数不能够声明为静态函数 36 将下面类 TestClass中的函数 fun()的对象成员 n值修改为 100的语句应该是( )。 class TestClass pu

10、blic: TestClass(int x)n=x; ) void SetNum(int n1)n=n1; private: int n: int fun() TestClass*ptr=new TestClass(45); ( A) TestClass(100) ( B) ptr-SqtNum(100) ( C) SetNum(100) ( D) ptr=100 37 运算符重载是对已有的运算符赋予多重的含义,所以 ( )。 ( A)能够对基本类型 数据 (如 double),重新定义 ”+”运算符的含义 ( B)只能重载 C+中己经有的运算符,不能重新定义新运算符 ( C)能够改变一个已有

11、运算符的优先级和操作数个数 ( D) C+中现有的所有运算符都可以重载 38 TestClass类定义如下: class TestClass private: int id; char gender; char木phone; public: TestClass(): id(0), gender(#),phone(NULL) TestClass(int no,char ge=#, char*ph=NULL) id=no; gender=ge; phone=ph; ) ; 下面类对象定义语句中错误的是 ( ) ( A) TestClass myObj(1); ( B) TestClass myOb

12、j(2,“11101111155”); ( C) TestClass myObj(1, m); ( D) TestClass myObj; 39 使用输入输出操作符 setw,能够控制 ( )。 ( A)填充字符 ( B)输出宽度 ( C)对齐方式 ( D)输出精度 40 有如下类定义: class Fun public: Fun(int v): value(v) Fun() private: Fun int value=0; ; 其中存在语法错误的行是 ( )。 ( A) ( B) ( C) ( D) 二、基本操作题 41 使用 VC6打开考生文件夹下的源程序文件 modil cpp,请修改

13、程序中的错误,使程序能得出正确的结果: num: 0 num: 1 tlum:10 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在 *eroor* #include int i=10; class TeslClass public: TestClass(int i) cout 必须使用递归 int funl(int n) ; 不能使用递归 int fun2(int n) void main() int i; couti; cout class TestClassA public: void fun() cout其中 是由一个或多个 组成 (如果是多个需要用逗号

14、隔开 )。其中, 可以换成 class,函数的声明部分和一般函数的声明部分类似,只有某些类型修饰符被虚拟类型参数替代。 13 【正确答案】 D 【试题解析】 ifstream是文件输入流类,只能用于输入,它没有提供任何用于输出的操作。 ofstream是文件输出流类,只能用于输出,它没有提供任何用于输入的操作。从文件中输入字符要用文件输入流类引 用 outf,并调用其输入字符的成员函数 get(1。根据题目中的要求,可以看出当输入文件中读到换行符时,程序将在输出文件中两次输出换行符,即双倍行距。 outc put(c)为输出一个字符,因为“if(c= n)coutc put(c); ”此句,当

15、 c为间格字符 (行距字符 )时,再多输出一次outc put(c)。 14 【正确答案】 C 【试题解析】 运算符函数的返回类型可以声明为基本数据类型,故选项 A)错误。 “、 *、 -*:、 ?”这五个运算符不可以重载,故选项 B)错误。在重载类型转换符时,由于 运算符本身已经表示出返回值类型,因此不需要返回值类型的声明。运算符重载是针对 C+中已有的运算符进行的,不可能通过重载创造出新的运算符,故选项 D)错误。 15 【正确答案】 B 【试题解析】 引用实际上就是别名,它与被引用变量拥有同一个地址空间。选项A)中 &m表示 m的地址,而 x是一个整型变量,在 C+中不能从地址值隐式转换

16、为整型值,故选项 A)是错的。选项 B)中其操作实际上就是为 m赋于一个别名 x,因此选项 B)是对的。选项 C)中引用必须要用被引用的对象,即引用必须要初始化;选项 D)中 x是一个整型引用 ,而其被引用的对象却是 m的地址,存在着与选项 A)类似的错误,因此选项 D)也是错的。 16 【正确答案】 A 【试题解析】 C+标识符是一个以字母或下划线开头的,由字母、数字、下划线组成的字符串。标识符不能与任何一个关键字同名,因此 case不能作为标识符。 17 【正确答案】 B 【试题解析】 C+中变量有全局变量和局部变量。当在一个函数中声明的局部变量与全局变量同名时,局部变量会将全局变量屏蔽掉

17、。要引用全局变量可以在变量名前面加 “: ”符号。 18 【正确答案】 A 【试题解析】 构造函数是一种特殊的成员函数,它必须与类名相同,不能指定返回值类型,可以有一个或者多个参数,可以重载。 19 【正确答案】 C 【试题解析】 定义对象 x时执行一次构造函数 (调用 Test(int a,int b=0),定义对象数组 y时,构造函数 (注意,该构造函数必须是没有任何参数的 )的执行次数与数组中对象的个数相等,即需要执行 3次,最后定义一个指向 Test对象的指针数组,它并不会创建对象,从而也就不会去执行构造函数,故构造函数一共执行了 4次。 20 【正确答案】 A 【 试题解析】 派生类

18、可以访问基类中的保护成员和公有成员。当基类有默认构造函数时,派生类可以不向基类传递参数,直接调用派生类的默认构造函数,而纯虚函数要在非抽象的子类中实现,虚基类不能被实例化。 21 【正确答案】 A 【试题解析】 “ ”、 “+”不能作为变量名, double是系统关键字。 22 【正确答案】 D 【试题解析】 此数组是 43二维数组, b22是第 3行第 3列。 23 【正确答案】 B 【试题解析】 “+(单目 )”是第 2优先级, “+”是第 4优先级, “funcl();后,执行派生类 Derived的函数 void funcl();调用 p-func2();后,执行基类的函数 void

19、func2(),因为虚拟函数是根据对象的实际类型调用,非虚拟函数是根据指针类型调用。故通过指针 p调用 func2时将直接调用基类中的 voidfunc2()。 29 【正确答案】 A 【试题解析】 C+中有些对象或函数需要访问其他对象的内部成员,这样可以用friend关键字将对应的类指定友元函数或友元类,但是这种关系不是相互的。如 果声明一个类 A为类 B的友元类,则类 A中的所有成元函数都可以访问类 B中的私有成员。另外,友元关系不会被继承。 30 【正确答案】 B 【试题解析】 C+中引用是个别名,建立时须用另一个数据对象的名字进行初始化,这样确定该引用所代表的数据对象。此后对该引用的任

20、何操作实际上就是对所代表的数据对象的操作。 31 【正确答案】 C 【试题解析】 C抖中类模板的声明格式为 template,并且类模板的成员函数都是模板函数。 32 【正确答案】 C 【试题解 析】 objl(10)执行一次构造函数, 0bj2(O)也执行一次构造函数;obi3(0bjl)以 obil作为参数执行一次构造函数; fun(obj3)中的 temp(p)将执行一次构造函数,而 fun本身是以按值传递参数,形参在 fun函数内也要分配独立的空间,所以也要执行一次构造函数,其返回结果也是 TestClass类型的,同样需要执行一次构造函数,所以一共要执行 4次。 33 【正确答案】

21、C 【试题解析】 ofstream outf(“TEST DAT”, ios base: app);是以 ios base: app方式打开文件,若文件存在,将文件指针定位于文件尾。若文件不存在,建立一个新文件。 34 【正确答案】 D 【试题解析】 C+中的析构函数是类中的一种特殊的成员函数,它用来完成对象删除前的一些清理工作。析构函数不指定返回值类型。析构函数没有参数,同时不能重载。 35 【正确答案】 D 【试题解析】 在 C+中的成员函数前加上 virtual修饰,就把该函数声明为虚函数。虚函数可以是另一个类的友元函数,但不得是静态成员函数。 36 【正确答案】 B 【试题解析 】 对

22、象指针存放的是对象的地址,要访问对象指针所指向对象的成员。可以通过两种方式。 (*指针 )成员,或者是指针 -成员。 37 【正确答案】 B 【试题解析】 C+在重载运算符时,必须符合以下的条件: 不可以重载内置的C+数据类型 (如 int, double等类型 )运算符的含义; 不可以定义 C+中没有的运算符; 不可以改变重载运算符的优先级与操作数的个数; 有些运算符不能被重载,例如域运算符 (: ),条件运算符 (?: )等,具体哪些运算符不能被重载与编译器有关。 38 【正确答案】 B 【试题解析】 B)中由于有两个参数,所以其调用了第二个构造函数,第二个构造函数的两个缺省参数,在调用时

23、,实参会按从左到右的顺序传给形参,所以第二个参数 “11101111155”会传递给形参 ge,而原型中的 ge为字符型,实参为指向字符的指针,所以在编译时会出现错误。 A)与 C)都能够正确的实现参数的传递。对于 D),由于在创建 TestClass的实例 myObi时,没有参数,所以其调用了第一个构造函数。 39 【正确答案】 B 【试题解析】 本题考查的是输入输出操作符。使用输入输出操作符 setw,可 以控制输入输出宽度。 40 【正确答案】 D 【试题解析】 C+中,不允许声明类成员变量的时候进行初始化,而在新的ANSI C+标准中,可以对常整型数值在定义时进行初始化,所以语句 4是

24、错的。 二、基本操作题 41 【正确答案】 (1)this i=i+1;或 TestClass: i=i+1;或 (*this) i=i+1; (2)TestClass print(0); (3)couti=i+1; ”或 “TestClass: i=i+l; ”或 “(*this) i=i+1; ”。 (3)主函数中通过 “tout1 n=1 计算公式: n!=1 公式分为参数 n是 1和大于 1的两种情况,例如: 1的阶乘 1!=1; 5的阶乘 5 1=54321。 解题思路 (1)进入 funl函数,根据前面的定义,它对阶乘算法的实现可以分为 三种情况,一是当 n小于或等于 0时,返回

25、0即可;二是当 n大于 1时应该用什么程序来实现阶乘的计算;三是当 n=1时,函数直接返回 1即可。 (2)计算 n!的值,先定义一个放阶乘值的变量 res,初值为 1,通过循环的方法,用累乘器 “res*=i; ”实现 n!。 四、综合应用题 43 【正确答案】 (1)将 “class TestClassB: ”补充完整为: class TestClassB: virxual public TestClassA (2)将 “class TestClassC: ”补充完整为: class TestClassC: virtual public TestClassA (3)将 “class Tes

26、tClassD: ”补充完整为: class TestClassD: public TestClassB,public TestClassC (4)添加语句: TestClassA: fun(); TestClassB: fun(); TestClassC: fun(); 【试题解析】 在 VC环境下打开程序,根据题干给出的几条功能要求,对程序中给出注释下的内容逐个补全或修改。从已定源程序的 main主函数开始 入手,可以看出程序通过调用类和函数 fun实现各种输出操作。 解题思路 (1)题目 1要求 “完成类 B虚继承于 A”。在 C+中,声明虚基类的一般形式为:class派生类名: vir

27、tual继承方式基类名,由题目知道 TestClassA为基类,TestClassB为派生类,所以第 1个标识下修改为 “class TestClassB: virtual public TestClassA”。 (2)同 (1),题目 2和题目 3中要求的标识 2和 3下的语句修改为 “class TestClassC: viitual public TestClassA”和 “classTestClassD: public TestClassB,public TestClassC”。 (3)题目 4要求 “函数 fun通过调用基类的 fun,完成所输出的内容 ”。在 C+中调用基类的成员函数,要使用作用域限定符 “: ”,类名 A:函数 fun,就是调用类A的函数: fun,根据题目中的要求补全对类 TestClassA、 TestClassB以及TestClassC中的 fun函数,即 “TestClassA: fun(); TestClassB: fun();TestClassC: fun(); ”。

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