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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

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

1、国家二级( C+)机试模拟试卷 175及答案与解析 一、选择题 1 设数据结构 B=(D, R),其中 D=a, b, c, d, e, f R=(f, A), (d, B), (e, D), (c, e), (a, C) 该数据结构为 ( )。 ( A)线性结构 ( B)循环队列 ( C)循环链表 ( D)非线性结构 2 下列叙述中错误的是 ( )。 ( A)循环队列空的条件是队头指针与队尾指针相同 ( B)若二叉树没有叶子结点,则为空二叉树 ( C)带链栈的栈底指针是随栈的操作而动态变化 的 ( D)若带链队列中只有一个元素,则队头指针与队尾指针必定相同 3 某带链栈的初始状态为 top=

2、bottom=NULL,经过一系列正常的入栈与退栈操作后, top=bottom=20。该栈中的元素个数为 ( )。 ( A) 1 ( B) 0 ( C) 20 ( D)不确定 4 设一棵度为 3的树,其中度为 2, 1, 0的结点数分别为 3, 1, 6。该树中度为 3的结点数为 ( )。 ( A) 1 ( B) 2 ( C) 3 ( D)不可能有这样的树 5 下面描述错误的是 ( )。 ( A)模块的独立性与模 块的信息隐蔽和局部化无关 ( B)内聚性和耦合性是模块独立程度的定性度量标准 ( C)一个模块的内聚性越高则该模块的独立性越强 ( D)一个模块的耦合性越高则该模块的独立性越弱 6

3、 下面属于黑盒测试方法的是 ( )。 ( A)错误推测法 ( B)基本路径测试 ( C)判定覆盖 ( D)条件覆盖 7 下面模型中为概念模型的是 ( )。 ( A)实体一联系模型 ( B)层次模型 ( C)关系模型 ( D)网状模型 8 学生关系模式中有 D(D#, Dn, D1, DAddr)(其属性分别为系编号、系 名称、系主任和系地址 )和 S(S#, Sn, SG, Date, Maj, D#)(其属性分别为学号、姓名、性别、入学日期、专业和系编号 )两个关系,关系 S的主键 (码 )是 S#,关系 S的外键(码 )是 ( )。 ( A) D# ( B) Maj ( C) Dl ( D

4、) Dn 9 关系的实体完整性要求关系中不能为空的属性是 ( )。 ( A)主键属性 ( B)外键属性 ( C)全部属性 ( D)候选键属性 10 学生选修课程的关系模式为 SC(S#, Sn, Sd, Sa, C#, G)(其属性分别为学号、姓名、所在系、年龄、课 程号和成绩 ); C(C#, Cn, P#)(其属性分别为课程号、课程名、先选课 )。关系模式中包含对主属性部分依赖的是 ( )。 ( A) S#Sd ( B) (S#, C#)G ( C) C#Cn ( D) C#P# 11 已知类 X中一个成员函数的原型声明为 “void Copy(X&r); ”,则下列选项中。解释正确的是

5、( )。 ( A) r为指向类 X的指针 ( B) r的地址值赋值给了变量 Copy ( C)变量 X与 r按位与的结果作为函数 Copy的参数 ( D) r是类 X的对象引用,用来作为函数 Copy的形参 12 下列字符串中不能作为 C+标识符使用的是 ( )。 ( A) IN25 ( B) test ( C) _1481 ( D) 123 13 下列语句中能正确定义变量的是 ( )。 ( A) const int*p NULL; ( B) const int y=99; ( C) const int x=0; ( D) const int z: 100; 14 有如下程序: #includ

6、e using namespace std; int main() int sum=0; for(int i=1; i using namespace std; int i=1; int j=4; int main() int i=5; j+=i; cout using namespace std; class Date public: Date(int y=2014, int m=9, int d=9): year(y), month(m), day(d) _(ostream&stream, Date&ddd)运算符 using namespace std; void fun(int&x,

7、int y) int temp; temp=x: x=y: y=temp: int main() int x=4, y=5; fun(x, y); cout using namespace std; int fl(int x, int y=5)return x+y; int n(double x)return x; int main() int a=3; double b=2 5; cout using namespace std; double add(double a, double b, double c=1) return a+b+c: int main() int result=ad

8、d(2, 3); cout using namespace std; class clock public: clock(): seconds(0); clock& operator+() this-seconds+; return*this; void display() coutseconds using namespace std; class Studentlnfo protected: ERROR*found* char Name; int Age; int ID; int CourseNum; float Record; public: Studentlnfo(char*nanle

9、, int Age, int ID, int courseNum, float record); FRROR*found* void Studentlnfo() float AverageRecord() return Record CourseNum; void show()const coutID=ID; CourseNum=courseNum; Record=record; int main() Studentlnfo st(“Smith“, 21, 99999, 12, 970); st show(); return 0; 三、简单应用题 42 请使用 VC6或使用【答题】菜单打开考生

10、文件夹 proj2下的工程 proj2。此工程中包含一个源程序文件 main cpp,其中有 “房间 ”类 Room及其派生出的 “办公室 ”类 Office的定义,还有主函数 main的定义。请在程序中 “ *found*”下的横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为: 办公室房间号: 308 办公室长度: 5 6 办公室宽度: 4 8 办公室面积: 26 88 办公室所属部门:会计科 注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动 “ *found*”。 #include using namespace std; class

11、Room “房间 ”类 int room_no;房间号 double length;房间长度 (m) double width;房间宽度 (m) public: Room(int the_room_no, double the_length, double the_width):room_no(the_loom_no), length(the_length), width(the_width) int theRoomNo()constreturn room_no; 返回房间号 double theLength()constreturn length; 返回房间长度 double theWidt

12、h()constreturn width; 返回房间宽度 *found* double theArea()const_返回房间面积 (矩形面积 ) ; class Office: public Room “办公室 ”类 char*depart;所属部门 public: Office(int the_room_no, double the_length, double the_width, const char*the_depart) *found* : _ depart=new charstrlen(the_depart)+1; *found* strcpy(_); Office()delet

13、edepart; const char * theDepartment()constreturn depart; 返回所属部门 ; int main() *found* Office_; cout using wpace std; class DataListf数据表类 int len; doubled; public: DataList(int len, double data=NULL); DataList(DataList&data); int length()constreturn len; double getElement(int i)constreturn di; DataLis

14、t operator+(const DataList&list)const;两个数据表求和 void show()const;显示数据表 ; void writeToFile(char*, const DataList&); main clyp #include“DataList h“ Datalist: DatRl ist(int len, double data): len(1en) d=new doublelen; for(int i=0; i等必须重载为成员函数,不能作为普通函数重载,选项 B正确;重载不能改变运算符运算对象 (操作数 )的个数,选项 C正确;加法运算符有两个操作数,作

15、为成员函数重载时,第一操作数是调用对象本身,所以形参表只有一个操作数,选项 D正确;本题答案为 A。 18 【正确答案】 A 【试题解析】 运算符一至多有 2个操作数,如果作为成员函数重载,那么形参表至多只有一个操作数,选项 A中形参表有 2个操作数,所以选项 A一定不属于类can的成员函 数,选项 B、 C、 D都可能是 cafl的成员函数,本题答案为 A。 19 【正确答案】 B 【试题解析】 C+中,两个函数是重载函数,必须具有相同的名字,且形参表或const属性不同,选项 A、 C、 D都可以区分;函数不能仅仅基于不同的返回类型而实现重载,选项 B不能区分,本题答案为 B。 20 【正

16、确答案】 D 【试题解析】 题意中 Date类重载了插入运算符 ,其中第一个参数是输出流对象的形参引用,第二个参数是 Date类对象的引用;由重载函数的返回值可知,返回类型也是输出流对象的引用,选项 A、 C错误;另外由于 main()函数中调用重载的插入运算符时: coutGoodDay,第一个参数是 cout,第二个参数是GoodDay,可知重载函数的两个参数都有实参传入,不存在隐式参数,所以该重载函数不是成员函数,而只能是类 Date的友元函数,选项 B错误,选项 D正确。 21 【正确答案】 B 【试题解析】 C+中,两个函数是重载函数,必须具有相同的名字,且形参表或const属性不同

17、,其中形参表不同包括形参的类型不同或形参的数量不同;选项 A中参数个数不同,是重载函数;选项 C中参数类型不同,是重载函 数;选项 D中参数类型不同,是重载函数;函数不能仅仅基于不同的返回类型而实现重载,选项 B仅仅返回类型不同,不是重载函数,本题答案为 B。 22 【正确答案】 C 【试题解析】 增量运算符 +有前缀自增运算符和后缀自增运算符两种,在重载该运算符时,由于他们的形参数目和类型都相同,为了可以区分是前缀运算符还是后缀运算符,通常将后缀运算符函数增加一个额外的 int型形参,使用后缀运算符时,编译器提供 0作为这个形参的实参,所以在调用前缀自增运算符时,使用对象显示的调用 x op

18、emtor+(),调用后缀自增运算 符时,显示的调用x operator+(0),本题答案为 C。 23 【正确答案】 D 【试题解析】 fun()函数的形参 x是整型引用类型, y是整型,将 x和 y的值交换后,传给 x的实参值被修改为传给 y的实参值,而传给 y的实参值不变,所以main()函数中,实参 x、 y在调用 fun()函数后, x的值修改为 5, y的值 5保持不变,输出结果为: 5, 5,答案为 D。 24 【正确答案】 C 【试题解析】 题意中两个 f1()函数是重载函数,其中第一个 f1()函数有两个整型形参 x, y,其中 y有默认值 5,函数 返回值 x+y;第二个

19、fl()函数有一个 double类型形参 x,再将 x转换为整型作为函数返回值; main()函数中,表达式 fl(a)+fl(b)两次调用 fl(), fl(a)由于实参 a是整型变量,所以会调用第一个 fl()函数,其中形参x的值为 a, y的值为 5,返回值为 a+5=8; fl(b)由于实参 b是 double类型,所以调用第二个 fl()函数,返回值为 2;所以程序运行结果为 8+2=10,答案为 C。 25 【正确答案】 A 【试题解析】 程序中 MYClass类给出一个默认构造函数,形参 d是整数类型,默认 值为 0,在成员初始化列表中使用形参 d初始化 val成员;语句序列中两

20、个表达式: 7+y和 x+3说明加法运算符函数的两个操作数可以是整型,也可以是MyClass类型,如果是整型的话,需要使用默认构造函数将整数类型隐式转换成临时的 MyClass类对象,此时赋给运算符函数时,就不可以使用引用类型了,所以选项 B、 C、 D都是错误的,选项 A是正确的,选项 A中由于两个操作数都是在形参列表,所以只能将运算符函数定义为友元函数,而不能定义为成员函数,本题答案为 A。 26 【正确答案】 C 【试题解析】 C+中,两个函 数是重载函数,必须具有相同的名字,且形参表或const属性不同,其中形参表不同又可以分为形参个数不同 (例如选项 A)或者形参类型不同 (例如选项

21、 B、 D),所以选项 A、 B、 D都可以作为重载函数原型;函数不能仅仅基于不同的返回类型而实现重载,选项 C不能作为重载函数原型,本题答案为 C。 27 【正确答案】 D 【试题解析】 增量运算符 +有前缀自增运算符和后缀自增运算符两种,在重载该运算符时,由于他们的形参数目和类型都相同,为了可以区分是前缀运算符还是后缀运算符,通常将后缀运算符函数增加一个额外的 int型形 参,使用后缀运算符时,编译器提供 0作为这个形参的实参,所以在调用前缀自增运算符时,使用对象显示的调用 x operator+(),调用后缀自增运算符时,显示的调用x operator+(0),本题答案为 D。 28 【

22、正确答案】 A 【试题解析】 题意 fa()函数是一个递归函数,当 n取值不等于 1时,函数递归调用自身,返回值为 3*fa(n-1)+2;当 n取值为 1时,函数返回值为 1;所以 fa(4)展开,等价于 3*fa(3)+2,等价于 3*(3*fa(2)+2)+2,等价于 3*(3*(3*fa(1)+2)+2)+2,等价于 3*(3*(3*1+2)+2)+2,也就等价于: 53,本题答案为 A。 29 【正确答案】 C 【试题解析】 题意 fib()函数是一个递归函数,当 n等于 0时,函数返回 0;当 n等于 1时,函数返回 1;当 n大于 1时,函数递归调用自身,返回值为 fib(n1)

23、+fib(n一 2); fib(2)调用一次函数,展开后等价于 fib(1)+fib(0),又调用了 2次,等价于 1+0=1,总共调用 3次 fib()函数,本题答案为 C。 30 【正确答案】 C 【试题解析】 add()函数有三个 double类型的形参 a、 b、 c,其中 c有默认值 1,当调用函数形式为: add(2, 3)时,形参 a的值为 2, b的值为 3, c的值为默认值l,函数返回 2+3+1=6,所以 main()函数中, result值为 6,输出 6,本题答案为C。 31 【正确答案】 A 【试题解析】 C+中,类的构造函数初始化列表仅仅指定用于初始化成员的值,并不

24、指定这些初始化执行的次序,成员被初始化的次序是定义成员的次序,所以成员对象在初始化时,构造函数的调用次序是这些成员的在类中的声明次序,选项 A正确,本题答案为 A。 32 【 正确答案】 B 【试题解析】 常对象是指对象的所有成员的值都不能被修改,常成员函数是指只能引用本类的数据成员,而不能修改它们的成员函数;常成员函数可以被常对象调用,也可以被普通对象调用,而普通成员函数只能被普通对象调用,不能被常对象调用,题意中对象 a是常对象, b是普通对象, SetData()是普通成员函数,GetData()是常成员函数,所以选项 B中通过常对象 a调用普通成员函数 SetData()是错误的,选项

25、 A、 C、 D都正确;本题答案为 B。 33 【正确答案】 C 【试题解析】 C+中,一 个类只要定义一个构造函数,编译器都不会再生成默认构造函数,也就是说只有一个类没有定义任何构造函数时,编译器才会在需要的时候自动生成一个默认构造函数本题答案为 C。 34 【正确答案】 B 【试题解析】 C+中,类的构造函数是在创建类对象时自动调用执行,选项 A正确;在构造函数的初始化列表中可以对数据成员进行初始化,对于基本类型或有默认构造函数的类成员对象,可以不进行初始化,系统自动完成初始化值,选项B错误;构造函数的 -参数可以有默认值,选项 C正确;如果没有声明任何构造函数,那么该类通常会在需要的时

26、候自动生成默认构造函数和复制构造函数,选项D正确,本题答案为 B。 35 【正确答案】 A 【试题解析】 C+中,类成员都是在构造函数的初始化列表中完成初始化的,在函数体内对类成员进行赋值,是在初始化完成之后,选项 B错误;类的构造函数是在创建类对象时由系统自动调用执行,选项 C错误;参数为空的构造函数属于默认构造函数,但有参数且参数都有默认值的构造函数也属于默认构造函数,选项 D错误;如果没有声明任何构造函数,那么该类通常会在需要的时候自动生成默认构造函数和复制构造函数,所以每个类都有复制构造函数,选 项 A正确;本题答案为 A。 36 【正确答案】 B 【试题解析】 友元函数是该函数可以访

27、问对应类的非公有成员,它本身不属于类的成员,选项 A错误;对于没有指定访问权限的成员,默认访问权限是私有的,选项 B正确;在类定义体内部实现的成员函数属于内联函数,在类定义体外实现的不属于内联函数,选项 C错误;类的成员函数可以是 private、 protected或public,选项 D错误;本题答案为 B。 37 【正确答案】 C 【试题解析】 友元函数不属于类的成员,没有 this指针,选项 B错误;静态成员函数 不属于任何类对象,它独立于类的任意对象而存在,由所有类对象所共享,它也没有 this指针,选项 A、 D错误;只有类的非静态成员函数才有 this指针,选项 C正确;本题答案

28、为 C。 38 【正确答案】 B 【试题解析】 main()函数中首先定义 clock类对象 c,使用默认构造函数,初始化 c的成员 seconds为 0;然后调用重载的增量运算符函数,将 c的成员 seeonds自增 1,此时 c seconds的值为 1;再调用 display()函数输出 c seconds,结果为1;接下来连续两次调用增量运算符函数,将 c seconds增加 2,此时 c seconds的值为 3,再调用 display()函数输出 3,最后再次调用 display()函数输出 3,综上运行结果为: 1 3 3;本题答案为 B。 39 【正确答案】 B 【试题解析】

29、C+中,构造函数名与类名相同,选项 A正确;构造函数没有返回值,选项 B错误;构造函数支持函数重载,调用时根据参数类型或函数的 const属性调用不同的构造函数,选项 C正确;如果没有给类定义任何构造函数,编译器在需要的时候会自动生成一个默认构造函数,选项 D正确;本题答案为 B。 40 【 正确答案】 D 【试题解析】 C+中,静态成员函数不属于任何类对象,它独立于类的任意对象而存在,由所有类对象所共享,它没有 this指针,只有类的非静态成员函数才有this指针,选项 A正确; this指针存储着调用对象的地址,选项 B正确;成员函数不能定义 this指针,它是由编译器隐含定义的,选项 C

30、正确;在构造函数中对象还没有完成生成,但这并不意味着对象什么都没有,所以构造函数中也有 this指针,通常尽量避免在构造函数中使用 this指针,选项 D错误;本题答案为 D。 二、基本操作题 41 【正确答案】 (1)char*Name; (2) Studentlnfo() (3)Studentlnfo: Studentlnfo(char*name, int age, int ID, int courseNam, float record) 【试题解析】 (1)主要考查考生对动态数组的掌握,由题目可知 Name应该指向一个动态数组,而不是一个有效 char型字符,因此要定义成 char型指针

31、。 (2)主要考查考生对析构函数的掌握,析构函数不需要函数返回类型,应把 void去掉。 (3)主 要考查考生对构造函数定义的掌握,构造函数也要使用作用域符号“: ”。 三、简单应用题 42 【正确答案】 (1)return length*width; (2)Room(the_room_no, the_length, the_width) (3)depart, the_depart (4)an_office(308, 5 6, 4 8, “会计科 “) 【试题解析】 (1)主要考查考生对成员函数的掌握,题目要求返回房间面积 (矩形面积 )。由此可知空格部分要填写的是一个 return语句, 返

32、回房间面积,也就是length*width,因此可以得出程序 return length*width;。 (2)主要考查考生对派生类的构造函数的掌握,派生类的构造函数要使用成员列表初始法先对基类进行初始化。 (3)考查 strcpy函数,由前一条语句 “depart=newcharstrlen(the_depart)+1; ”可知,程序给 depart分配了长度为 the_depart串长加 1的空间,因此要复制字符串the_depart串到 depart,直接填写 “strcpy(depart, the_depart)”即可。 (4)主要考查考生对类的掌握,题目要求输出的结果为: 办公室房间号: 308 办公室长度: 5 6 办公室宽度: 4 8 办公室面积: 26 88 办公室所属部门:会计科 由 Office类的构造函数可知要定义的一个 Office类的对象为 an_office(308,5 6, 4 8, “会计科 “)。 四、综合应用题 43 【正确答案】 for(im i=0; ilen; +i) 遍历对象 list中的数组和 d数组,把对应的值相加后 放到数组 dd中。

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