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

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

1、国家二级( C+)机试模拟试卷 81及答案与解析 一、选择题 1 有如下类定义: class Foo public: Foo(int v) : value(v) / Foo() / private: Foo() / int value = 0; / ; 其中存在语法错误的行是 ( )。 ( A) ( B) ( C) ( D) 2 某二叉树有 5个度为 2的结点,则该二叉树中的叶子结点数是 ( )。 ( A) 10 ( B) 8 ( C) 6 ( D) 4 3 对 C+编译器区分重载函数无任何意义的信息是 ( )。 ( A)参数类型 ( B)参数个数 ( C)返回值类型 ( D)常成员函数关键字

2、 const 4 有如下程序: #include using namespace std; class VAC public: int f() const return 3; int f() return 5; ; int main() VAC v1; const VAC v2; cout #include using namespace std; class Animal public: virtual string GetType() const return “Animal“; virtual string GetVoice() const return “Voice“; ; class

3、 Dog:public Animal public: string GetType() const return “Dog“; string GetVoice() const return “Woof“; ; class Cat:public Animal public: string GetType() const return “Cat“; string GetVoice() const return “Miaow“; ; void Type(Animal a) cout T square(T x) return x * x; 其中的参数 T是 ( A)函数形参 ( B)函数实参 ( C)

4、模板实参 ( D)模板形参 14 有如下程序段: int i=2;int j=3; int main() i=j=9; cout using namespace std; class MyClass public: MyClass() coutTfun(Tx)returnx; ( B) templateTfun(Tx,intn)returnx*n; ( C) templateTfun(T*p)return*p; ( D) templateTclassATn; 24 已知数组 arr 的定义如下: int arr5 = 1,2,3,4,5; 下列语句中输出结果不是 3的是 ( A) cout T

5、 square(T x) return x * x; 其中的 T是 ( A)函数形参 ( B)函数实参 ( C)模板形参 ( D)模板实参 29 若 x和 y是程序中的两个整型变量,则下列 if语句中合法的是 ( A) if(x)y=1;elsey=2; ( B) if(0)y=1elsey=2; ( C) if(x!=0)theny=1elsey=2; ( D) ifx!=0y=1;elsey=2; 30 在定义一个类模板时,模板形参表是用一对括号括起来的,所采用的括号是 ( A)圆括号 ( B)中括号 ( C)尖括号 ( D)花括号 31 下列选项中,正确的 C+标识符是 ( A) a3

6、( B) a-3 ( C) a3 ( D) a_3 32 下列有关类继承的表述中,错误的是 ( A)派生类可以继承多个基类 ( B)派生类构造函数要负责调用基类的构造函数 ( C)虚基类可以解决由多继承产生的二义性问题 ( D)虚基类可以解决由多继承产生的二义性问题 33 下列叙述中正确的是 ( )。 ( A)顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的 ( B)顺序存储结构只针对线性结构,链式存储结构只针对非线性结构 ( C)顺序存储结构能存储有序表,链式存储结构不能存储有序表 ( D)链式存储结构比顺序存储结构节省存储空间 34 关于运算符重载,下列表述中正确的是

7、( )。 ( A) C+已有的任何运算符都可以重载 ( B)运算符函数的返回类型不能声明为基本数据类型 ( C)在类型转换符函数的定义中不需要声明返回类型 ( D)可以通过运算符重载来创建 C+中原来没有的运算符 35 下列关于 C+预定义流对象的叙述中,正确的是 ( )。 ( A) cin是 C+预定义的标准输入流对象 ( B) cin是 C+预定义的标准输入流类 ( C) cout是 C+预定义的标准输入流对象 ( D) cout是 C+预定义的标准输入流类 36 下列关于赋值运算符 =重载的叙述中,正确的是 ( A)赋值运算符只能作为类的成员函数重载 ( B)默认的赋值运算符实现了 “深

8、层复制 “功能 ( C)重载的赋值运算符函数有两个本类对象作为形参 ( D)如果已经定义了复制(拷贝)构造函数,就不能重载赋值运算符 37 有如下程序: #include using namespace std; class Point public: Point(int xx=0,int yy=0):x(xx),y(yy) void SetX(int xx) x=xx; void SetY(int yy) y=yy; private: int x,y; ; class Circle:public Point public: Circle(int r):radius(r) int GetRad

9、ius() return radius; private: void SetRadius(int r) radius=r; int radius; ; int main() Circle c1(5); c1.SetX(1); / c1.SetY(2); / c1.SetRadius(10); / cout using namesapce std; int return r; int main() int a=1,3,5,7; cout usingnamespacestd; classMyClass public: MyClass(intlen) array=newintlen; arraySi

10、ze=len; for(inti=0; i #include usingnamespacestd; classBasel public: *found*下列语句需要声明纯虚函数 Show _; ; classBase2 protected: char*p; Base2(constchar*s) _p=newcharstrlen(s)+1; *found*下列语句将形参指向的字符串常量复制到该类的字符数组中 _; Base2()delete_P; ; *found*Derived类 公有继承 Basel,私有继承 Base2类 classDerived: _ public: *found*以下构

11、造函数 调用 Base2类构造函数 Derived(constchar*s): _ voidShow() coutShow(); deletepb; return0; 四、综合应用题 43 请使用 VC6或使用【答题】菜单打开考生目录 proj3下的工程文件 proj3,此工程中包含一个源程序文件 proj3 cpp,其中定义了用于表示日期的类 Date、表示人员的类 Person和表示职员的类 Staff;程 序应当显示: 张小丽 123456789012345 但程序中有缺失部分,请按照以下提示,把缺失部分补充完整: (1)在 “ *1*found*”的下方是构造函数的定义中的一个语句,它

12、用参数提供的身份证号 id_card_no对数据成员 idcardno进行初始化。 (2)在 “ *2*found*”的下方是构造函数定义的一个组成部分,其作用是利用参数表中的前几个参数对基类 Person进行初始化。 (3)在 “ *3*found*”的下方定义了一个 Staff对 象,其中: 身份证号: 123456789012345 姓名:张三 出生日期: 1979年 5月 10日 性别:女 工作部门:人事部 工资: 1234 56元 注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动 “*found*”。填写的内容必须在一条语句中完成,否则评分将产生错误。 pr

13、oj3 cpp #include usingnamespacestd; classDate public: intyear; intmonth; intday; Date(): year(0), month(0), day 0) Date(inty, intm, intd): year(y), month(m), day(d) ; classPerson charidcardno16;身份证号 charname20;姓名 Datebirthdate;出生日期 boolismale;性别: true为男, false为女 public: Person(constchar*pid, constch

14、ar*pname, Datepdate, boolpmale); constchar*getIDCardNO()const returnidcardno; constchar*getName()constreturnname; voidrename(constchar*newname); DategetBirthDate()constreturnbirthdate; boolisMale()constreturnismale; ; classStaff: publicPerson chardepartment20;工作部门 doublesalary;工资 public: Staff(const

15、char*idcardno, constchar*p_name, Datebirth_date, booliSmale, constchar*dept, doublesal); constchar*getDepartment()const returndepartment; voidsetDepartment(constchar*d); doublegetSalary()constreturn salary; voidsetSalary(doubleS)fsalary=s; ; Person: Person(constchar*idcard_no, constchar*p_name, Date

16、birth_date,boolismale) : birthdate(birthdate), ismale(is male) *1*found* _; strcpy(name, p_name); voidPerson: rename(constchar*new _name)strcpy(name, new_name); Staff: Stafffconstchar*idcard no, constchar*p_name, Datebirth_ date, boolismale, *2*found* constchar*dept, doublesal): _ setDepartment(dept

17、); setSalary(sal); voidStaff: setDepartment(const char*dept) strcpy(department, dept); intmain() *3*found* _; Zhangsan rename(“张小丽 “); cout virtual ()=0; ; 所以 B选项正确。 8 【正确答案】 A 【试题解析】 结构化方法软件需求分析工具主要有数据流图、数据字典、判定树和判定表。 9 【正确答案】 A 【试题解析】 本题考查在类中重载流运算 符 var;。其中, var代表一个变量, “”称为提取运算符,该语句的含义是,将用户输入的数据保存

18、到 var中。 (3)考查语句的初始化,我们来看 MyClass 类的构造函数: MyClass(intlen) array=newintlen;给数组动 态分配空间,大小为 len arraysize=len;赋值 for(inti=0; iarraySize; i+) arrayi=i+1;循环给数组赋 值,从 1到 10 请注意:形参 len 没有定义默认值,因此要想使 array动态数组里依次存放 1, 2,3, 4, 5, 6, 7, 8, 9, 10,就是要给 len 赋值为 10。 三、简单应用题 42 【正确答案】 (1)virtualvoidShow()=0 (2)strcp

19、y(_p, s) (3)publicBase1, privateBase2 (4)Base2(s) 【试题解析】 (1)主要考查的是纯虚函数的定义。题目要求声明纯虚函数 Show,因此首先看 Basel类的派生类 Derived类中 Show 函数的定义: voidShow() cout一 pend1; 这时就可以得出答案了,只要在 void 前加上 virtual,在 ()后加上 =0;,再把函数体去掉就可以了,即 virtualvoidShow()=0;。特别注意纯虚函数和虚函数的区别,虚函数不能添加 =0。 (2)主要考查的 是字符串赋值语句,题目要求将形参指向的字符串常量复制到该类的字

20、符数组中。即把 s复制给 _p,直接使用语句 strcpy(_p, s);就可以了, strcpy为系统提供的字符串复制函数。 (3)主要考查的是派生类的声明。题目要求 Derived类公有继承 Basel,私有继承Base2类。公有继承使用 public,保护继承使用 protected,私有继承使用private。如果一个类同时继承多个基类时,各个基类之间用 “, ”分开。 (4)主要考查的是派生类的构造函数,定义派生类的构造函数时要使用成员列表对基类初始化。 基 类一: Base1类,没有构造函数,不需要使用参数。 基类二: Base2类,有构造函数: Base2(constchar*s

21、),因此需要成员列表:Derived(constchar*s): Base2(s)。 四、综合应用题 43 【正确答案】 (1) strcpy(idcardno,id_card_no) (2) Person(id_card_no,p_name,birth_date,is_male) (3) Staff Zhangsan(“123456789012345“,“张三 “,Date(1979,5,10),false,“人事部 “,1234.56) 【试题解析】 (1)主要考查考生对 strcpy 函数的掌握 ,复制字符串要使用 strcpy函数 ,其格式为 :strcpy(字符串 1,字符串 2);。 (2)主要考查考生对构造函数的掌握 ,派生类的构造函数要使用成员列表初始化先调用基类的构造函数。 (3)主要考查考生对构造函数的掌握 ,由题目要求可知要针对象初始化为 :Zhangsan(“123456789012345“,“张三 “,Date(1979,5,10),false,“人事部“,1234.56);。

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

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

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