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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

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

1、国家二级( C+)笔试模拟试卷 137及答案与解析 1 算法的空间复杂度是指 ( A)算法程序的长度 ( B)算法程序中的指令条数 ( C)算法程序所占的存储空间 ( D)算法执行过程中所需要的存储空间 2 下列关于栈的叙述正确的是 ( A)在栈中只能插入数据 ( B)在栈中只能删除数据 ( C)栈是先进先出的线性表 ( D)栈是先进后出的线性表 3 在深度为 5的满二叉树中,叶子结点的个数为 ( A) 31 ( B) 32 ( C) 16 ( D) 15 4 下面描述中,符合结构化程序设计风格的是 ( A)使用顺序、选择和重复 (循环 )三种基本控制结构表示程序的控制逻辑 ( B)模块只有一

2、个入口,可以有多个出口 ( C)注重提高程序的执行效率 ( D)不使用 goto语句 5 下面概念中,不属于面向对象方法的是 ( A)对象 ( B)继承 ( C)类 ( D)过程调用 6 下列对于软件测试的描述中正确的是 ( A)软件测试的目的是证明程序是否正确 ( B)软件测试的目的是使程序运行结果正确 ( C)软件测试的目的是尽可能多地发现程序中的错误 ( D)软件测试的目的是使程序符合结构化原则 7 下面 不属于软件设计原则的是 ( A)抽象 ( B)模块化 ( C)自底向上 ( D)信息隐蔽 8 数据库设计的根本目标是要解决 ( A)数据共享问题 ( B)数据安全问题 ( C)大量数据

3、存储问题 ( D)简化数据维护 9 下列叙述中正确的是 ( A)数据库系统是一个独立的系统,不需要操作系统的支持 ( B)数据库设计是指设计数据库管理系统 ( C)数据库技术的根本目标是要解决数据共享的问题 ( D)数据库系统中,数据的物理结构必须与逻辑结构一致 10 下列模式中,能够给出数据库物理存储结构与物理存 取方法的是 ( A)内模式 ( B)外模式 ( C)概念模式 ( D)逻辑模式 11 面向对象程序设计将数据和什么放在一起,作为一个相互依存、不可分割的整体来处理 ? ( A)对数据的操作 ( B)信息 ( C)数据隐藏 ( D)数据抽象 12 在 C+中,实现封装性需借助于 (

4、A)枚举 ( B)类 ( C)数组 ( D)函数 13 下面关于虚函数的描述中正确的是 ( A)虚函数是一个静态成员函数 ( B)虚函数是一个非成员函数 ( C)虚函数既可以在函数说明时定义,也可以在函数实现时定义 ( D)派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型 14 下列关于运行符重载的描述中,正确的是 ( A)运算符重载可以改变操作数的个数 ( B)运算符重载可以改变操作数的优先级 ( C)运算符重载可以改变运算符的结合性 ( D)运算符重载可以使运算符实现特殊功能 15 有如下函数模板声明: template typename T T Max(T a, T B) re

5、turn (a=B) ?a:b; 下列对函数模板 Max()的调用中错误的是 ( A) Max(3.5,4.5) ( B) Max(3.5,4) ( C) Max double (3.5,4.5) ( D) Max double (3.5,4) 16 若语句: cout setfill( ) setw(5) 3141512 setw(5) “OK!“; 是程序中第 1个输出语句,则输出结果是 ( A) 3141512 OK! ( B) 31415120K! ( C) 314150K! ( D) 31415 OK! 17 有如下语句序列: int k=0; dok+=5; cout $; whi

6、le(k 19); while(k-0 0)cout *; 执行上面的语句序列输出字符 $和 *的个数分别是 ( A) 4和 20 ( B) 55和 20 ( C) 4和 21 ( D) 5和 21 18 设有以下程序段: int a5=0,*p, *q; p=a; q=a; 则下列选项中,合法的运算是 ( A) p*q ( B) p-q ( C) p*q ( D) p%q 19 下列语句段将输出字符 *的个数为 int i=100; while(1) i-; if(i=0) break; cout *; ( A) 98个 ( B) 99个 ( C) 100个 ( D) 101个 20 下列对

7、字符数组进行初始化的语句正确的是 ( A) char a =“Hello“; ( B) char a=H,e,1,1,o); ( C) char a5=“Hello“; ( D) char a25=“Hello“, “World“;p 21 在下面的类定义中,横线处应填入的内容是 class Fred public: void print () cout data end1; void setData (double D) data=d; static int count; private: double data; ;_count=0; /静态数据成员的定义 ( A) int ( B) st

8、atic int ( C) int Fred: ( D) static int Fred: 22 有如下类声明: class Foo int bar; ; 则 Foo类的成员 bar是 ( A)公有数据成员 ( B)公有成员函数 ( C)私有数据成员 ( D)私有成员函数 23 在表达式 x-y中, “-”是作为非成员函数重载的运算符。若使用显式的函数调用代替直接使用运算符 “-”,这个表达式还可表示为 ( A) x.operator-(y) ( B) operator-(y,x) ( C) y.operator-(x) ( D) operator-(x,y) 24 已知在一个类体中包含如下函

9、数原型: VOLUME operator-(VOLUME)const;,下列关于这个函数的叙述中,错误的是 ( A)这是运算符 -的重载运算符函数 ( B)这个函数所重载的运算符是一个一元运算符 ( C)这是一个成员函数 ( D)这个函数不改变类的任何数据成员的值 25 在公有派生的情况下,派生类中定义的成员函数只能访问原基类的 ( A)公有成员和私有成员 ( B)私有成员和保护成员 ( C)公有成员和保护成员 ( D)私有成员、保护成员和公有成员 26 有如下程序: #include iostream using namespace std; int main() cout.fill(*);

10、 cout.width(6); cout.fill(#); cout 123 end1; return 0; 执行后的输出结果是 ( A) #123 ( B) 123# ( C) *123 ( D) 123* 27 下列虚基类的声明中正确的是 ( A) class virtual B: public A ( B) virtual class B: public A ( C) class B: public A virtual ( D) class B: virtual public A 28 在一个类体的下列声明中,下确的纯虚函数声明星 ( A) virtual voidvf0:0; ( B)

11、 void vf(int)=0; ( C) virtual int vf(int); ( D) virtual void vf(int) 29 有如下程序: #include iostream using namespace std:class Testpublic: Test() n+=2; Test() n-=3; ; static int getNum() return n;privaue: static int n:;int Test:n=1;int main() Test* p=new Test; delete p; cout “n=“ Test:getNum() end1; ret

12、urn 0; 执行后的输出结果是 ( A) n=0 ( B) n=1 ( C) n=2 ( D) n=3 30 有以下程序: #include iostream using namespace std;class Apublic: A(int i,int j) a=1; b=j; void move (int x,int y) a+=x; b+=y; void show() cout a “,“ b end1 private: int a,b; ; class B : private A public: B(int i,int 3):A (i,j) void fun() move (3,5);

13、 void f1() A:show(); ; int main() B d(3,4); d.fun(); d.f1(); return 0; 程序执行后的输出结果是 ( A) 3,4 ( B) 6,8 ( C) 6,9 ( D) 4,3 31 有如下类声明: class XA int x; public: XA(int n)x=n; ; class XB:public XA int y; public: XB(int a, int b) ; ; 在构造函数 XB的下列定义中,正确的是 ( A) XB:XB(int a,int B) :x(A) ,y(B) ( B) XB:XB(int a,in

14、t B) :XA(A) ,y(B) ( C) XB:XB(int a,int B) :x(A) ,XB(B) ( D) XB:XB(int a,int B) :XA(A) ,XB(B) 32 如果表达式 y*x+中, “*”是作为成员函数重载的运算符, “+”是作为友元函数重载的运算符,采用运算符函数调用格式,该表达式还可表示为 ( A) x.operator+(0).operator*(y); ( B) operator*(x.operator+(0),y); ( C) y.operator*(operator+(x,0) ( D) operator*(operator+(x,0),y) 3

15、3 在表达式 x+y*z中, +是作为成员函数重载的运算符, *是作为非成员函数重载的运算符。下列叙述中正确的是 , ( A) operator+有两个参数, operator*有两个参数 ( B) operator+有两个参数, operator*有一个参数 ( C) operator+有一个参数, operator*有两个参数 ( D) operator+有一个参数, operator*有一个参数 34 下面关于 C+流的叙述中,正确的是 ( A) cin是一个输入流对象 ( B)可以用 ifstream定义一个输出流对象 ( C)执行语句序列 char *y=“PQMN“; cout y

16、;将输出字符串 “PQMN“的地址 ( D)执行语句序列 char x80;cin.getline(x,80);时,若键入 Happy new year 则x中的字符串是 “Happy“ 35 有如下程序: #include iostream.h using namespace std; class Stack public: Stack (unsigned n=10):size (n) rep_=new int size; top=0; Stack (stack for (int i=0;i size;i+ rip_i-s.rep_i; top=s.top; Stack() deletere

17、p_; void poush (int a) rep_topj=a; top+; int pep() -top; return rep_top; bool isEmpty() cons5 return Top =0; private: int*rep_; unsigned size, top; ; int main() Stack s1; for(int i=1;i 5;i+) s1.push(i); Stack s2(s1); for(i=1;i 3;i+ couts2.pop() ,; s2.push(6); s1.push(7); while(!s2.isEmpty() cout s2.

18、pop() ,; return 0; 执行上面程序的输出是 ( A) 4,3,2,1, ( B) 4,3,6,7,2,1, ( C) 4,3,6,2,1, ( D) 1,2,3,4, 36 设一棵完全二叉树共有 700个结点,则在该二叉树中有 _个叶子结点。 37 在面向对象方法中,类之间共享属性和操作的机制称为 _。 38 在结构化分析方法中,用于描述系统中所用到的全部数据和文件的文档称为_。 39 如果一个工人可管理多个设备,而一个设备只被一个工人管理,则实体 “工人 ”与实体 “设备 ”之间存在 _关系。 40 问题处理方案的正确而完整的描述称为 _。 41 求 1 100的和,可写成

19、for(s=0,i=1;_;i+) s+=1的形式。 42 从实现的角度划分, C+所支持的两种多态性分别是 _时的多态性和运行时的多态性。 43 非成员函数只有在声明为类的 _才能防问这个类的所有 private成员。 44 在下面横线上填上适当的语句,完成程序。 #include iostream using namespace std; class Base int x; public: Base(int i) x=i; Base() ; class Derived : public Base public: _/完成类 Derive构造函数的定义 ; int main() Derive

20、d Obj; return 0; 在横线处应填入的语句是 _。 45 非成员函数应声明为类的 _函数才能访问这个类的 private成员。 46 在下面程序的横线处填上适当的 语句,使该程序的输出为 12。 #include iostream using namespace std; class Base public: int a; Base(int i) a=i; class Derived : public Base int a; public: Derived(int x) : Base(x),b(x+1) void show() _; /输出基类数据成员 a的值 cout b end

21、l; ; int main () Derived d(1); d.show(); return 0; 47 假定 A为一个类,则语句 A(A if (x y) a=x; x=y; y=a; if (y z) a=y; y=z; z=a; if (x y) a=x; x=y; y=a; 49 多数运算符既能作为类的成员函数重载,也能作为类的非成员函数重载,但 运算符只能作为类的 _函数重载。 50 下面是一个栈类的模板,其中 push函数将元素 i压入栈顶, pop函数弹出栈顶元素。栈初始为空, top值为 0,栈顶元素在 stacktop-1中,在下面横线处填上适当语句,完成栈类模板的定义。

22、template class T Class Tstack enumsize=1000; T stacksize; int top; public: Tstack():top(0) void push(const T T pop() if(top=0) exit(1); /栈空时终止运行 return _ ; ; 51 在下面函数的横线处填上适当的内容,使该函数能够利用递归方法求解字符串str的长度 (不得使用系统提供的字符串处理函数 )。 int GetLen(char*str) if(_)return _; else return 1+GetLen(str+1); 国家二级( C+)笔试模

23、拟试卷 137答案与解析 1 【正确答案】 D 【试题解析】 算法的空间复杂度指执行这个算法所需要的内存空间。一个算法所占用的存储空间包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。正确答案为 D。 2 【正确答案】 D 【试题解析】 栈是一种特殊的线性表,其插入与删除运算都只在线性表的一端进行。在这种线性表的结构中,一端封闭;不允许插入与删除元素;另一端开口,允许插入与删除元素。在栈中不仅能插入数据,也能删除数据,选项 A与 B都错。栈是后进先出的线性表,而不是先进先出的线性表,选项 C的说法错误,选项 D正确。 3 【正确答案】 C 【试题解析】 二

24、叉树的一个性质是,在二叉树的第 k层上,最多有 2k-1(k1)个结点对于满二叉树,每一层上的结点数都达到最大值,即在满二叉树的第 k层上有 2k-1个结点。所以,在深度为 5的满二叉树中,所有叶子结点在第 5层上,即其结点数为 2k-1=25-1=16。 4 【正确答案】 A 【试题解析】 应该选择只有一个入口和一个出口的模块,故 B选项错误;首先要保证程序正确,然后才要求提高效率,故 c选项错误;严格控制使用 goto语句,必要时可以使用,故 D选项错误。 5 【正确答案】 D 【试题解析】 A, B, C属于面向对象方法, D属于面向过程方法,故答案为D。 6 【正确答案】 C 【试题解

25、析】 软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出 程序可靠性的鉴定。测试不是为了证明程序是正确的,而是在设想程序有错误的前提下进行的,其目的是设法暴露程序中的错误和缺陷。可见选项 c的说法正确。 7 【正确答案】 C 【试题解析】 软件设计遵循软件王程的基本目标和原则,建立了适用于在软件设计中应该遵循的基本原理和与软件设计有关的概念。它们是:抽象、模块化、信息隐蔽、模块独立性。没有自底向上,所以,本题的正确答案是 C。 8 【正确答案】 A 【试题解析】 本题考核数据库技术的根本目标,很简单,记忆性题目。数据库技术的根本目标就是要解决数据的 共享问题,选项 A正确。

26、9 【正确答案】 C 【试题解析】 A选项,数据库系统需要操作系统的支持,必不可少,故其叙述不正确。 B选项错误,数据库设计是指设计一个能满足用户要求,性能良好的数据库。 D选项也不对,数据库应该具有物理独立性和逻辑独立性,改变其一而不影响另一个。正确答案为 C。 10 【正确答案】 A 【试题解析】 能够给出数据库物理存储结构与物理存取方法的是内模式。外模式是用户的数据视图,也就是用户所见到的数据模式。概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户公共数据视 图。没有逻辑模式这一说法。正确答案为 A。 11 【正确答案】 A 【试题解析】 面向对象语言包含 3个要素,印对象,类和继

27、承。这 3个要素反映7面向对象的传统观念。面向对象程序设计的本质是把数据和对数据的操作当成一个整体即对象。 12 【正确答案】 B 【试题解析】 本题考核 C+对面向对象程序设计的支持。封装性是指将数据和算法捆绑成一个整体,这个整体就是对象,描述对象的数据被封装在其内部。 C+语言通过建立用户定义类型 -“类 ”,来支持封装性和信息隐藏。 13 【正确答案】 D 【试题解析】 本题考核虚函数。虚函数是非静态的成员函数。它不能是友元函数,但可以在另一个类中被声明为友元函数,所以 A选项不正确;虚函数必须是类的成员函数,所以 B选项是错误的;虚函数声明只能出现在类定义的函数原型声明中,而不能在成员

28、函数的函数体实现的地方,所以 C选项是不正确的;一般要求基类中说明了虚函数后,派生类说明的虚函数应该与基类中虚函数的参数个数相等,对应参数的类型相同。如果不相同,则将派生类虚函数的参数类型强制转换为基类中虚函数的参数类型。故 D选项的说法是正确的。 14 【正确答案】 D 【 试题解析】 本题考核运算符重载的概念。 C+把重载的运算符视为特殊的函数,称为运算符函数,函数名就是在运算符前加上保留字 operator。运算符重载就是赋予已有的运算符多重含义。 C+中通过重新定义运算符,使它能够用于特定类的对象执行特定的功能。但是用户重新定义运算符,不改变原运算符的操作符个数、优先级和结合性同时运算

29、符重载后,也不改变运算符的语法结构,即单目运算符只能重载为单目运算符,双目运算符只能重载为双目运算符。所以 A,B, C选项的描述都是错误的。 15 【正确答案】 B 【试题解析】 本题考核函数模板的使用。引用模板函数和引用一般的函数在语法形式上没有任何区别。所有的类型替换都是编译器在幕后悄悄进行的。但是要注意的是说明一个函数模板后,当编译系统发现有一个对应的函数调用时,将根据实参中的类型来确认是否匹配函数模板中对应的形参。例如,本题中的 B) 选项,编译系统从第一个参数 “3.5”获得的信息是 “T对应于 double”,而从第二个参数 “4”处获得的信息是 “T对应于 int”,二者相互矛

30、盾,在编译时会产生错误。对于 D) 选项中紧跟在函数名后的 double就是模板实参表,通过它通知编译系统在 调用过程中, int型的参数 “4”将被自动换成 double型。 16 【正确答案】 A 【试题解析】 本题考核能够使用格式控制数据的输入输出函数 setw(int n)用来设置输入输出宽度,当实际数据宽度小于指定的宽度时,多余的位置用填充字符填满;当实际数据的宽度大于设置的宽度时,仍按实际的宽度输出。函数 setfill(char C) 用来设置填充字符数据 “3141512”的实际宽度大于 5,所以不会有填充,数据 “OK!”的宽度小于 5,所以之前有两个字符 , 的填充。 17

31、 【正确答案】 A 【试题解析】 本题 do.while循环语句和 while循环语句的使用。题中 do.while语句循环了 4次, while语句循环了 20次,所以输出字符 $和 *的个数分别是 4和20。 18 【正确答案】 B 【试题解析】 本题考核指针的运算。 C+语言中,指向同一字符串的指针之间可以,也只能进行减运算,减运算后返回的是一整型数,表示指针之间的地址偏移量。 19 【正确答案】 B 【试题解析】 本题考核 while循环的运用。在 while循环体中,先将变量 i减 1,然后通过判断 i是否为 0来结束循环,最后才执行输出。所以, cout *;语句在 i的值为 10

32、0 2时会被执行,而 i为 1时循环结束即 cout *;语句被执行的次数是 99次。故应该选择 B。 20 【正确答案】 A 【试题解析】 本题考查对字符数组的初始化。 A选项中,数组 a在定义后紧跟初始化的情况下可省略数组长度,其最终数组长度由所赋字符串常量的长度给定。 A选项正确。 B选项中, a是一个二维数组,二维数组也能在定义时被初始化如果对全部元素都赋初值,则定义数组时第一维的大小可以忽略,但第二维的大小不能省略。故 B选 项错误。 C选项和 D选项都忽略了字符串的大小要比字符串中的字符数多 1这一点,造成了数组的越界。 21 【正确答案】 C 【试题解析】 本题考核静态数据成员的

33、定义。题中数据成员 count被定义成了静态的,其初始化的格式为:类型类名:静态数据成员 =常量值 ;,所以横线处应填入的为 “int Fred”。 22 【正确答案】 C 【试题解析】 本题考核类的定义。在定义类的成员变量时,一般都会加上关键字来修饰其访问权限,其缺省值为私有。 23 【正确答案】 D 【试题解析】 本题 考核运算符的重载。运算符函数有两种调用形式。第一种是像一般函数那样用函数名进行调用,如 c1. operator+(c2)或 operator+(c1,c2)第二种是通过运算符构成表达式的形式进行调用,如 c1+c2。所以选项 D的标书是正确的。 24 【正确答案】 B 【

34、试题解析】 本题考核运算符的重载。题中语句为运算符 -的重载运算符函数,它所重载的运算符 是一个二元运算符,且是作为常成员函数来重载的,所以它不能更新对象的数据成员,也不能调用该类中没有用 const修饰的成员函数。 25 【正确答 案】 C 【试题解析】 本题考核派生类的定义和访问权限。当类的继承方式为公有继承时,基类的公有成员和保护成员的访问属性在派生类中不变,而基类私有成员不可访问。即基类的公有成员和保护成员分别作为派生类的公有成员和保护成员,派生类的其他成员可以直接访问它们。 26 【正确答案】 A 【试题解析】 本题考核 I/O的格式化输出。语句 “cout.fill(*);”表示填

35、充字符为*,并且一直有效,直到再次设置填充字符为止。语句 “cout.width(6);”用来设置输入输出宽度,当实际数据宽度 小于指定的宽度时,多余的位置用填充字符填满;当实际数据的宽度大于设置的宽度时,仍按实际的宽度输出。语句“cout.fill(#);”表示将填充字符改为 #(即把之前设置的 #改为 #),由于数据“123”的实际宽度小于 6,由于输出的初始状态为在输出宽度内右对齐,所以前面将会有 3个填充字符 #。 27 【正确答案】 D 【试题解析】 本题考核虚基类的声明方式。虚基类说明格式如下: Virtual 继承方式基类名 其中, virtual是虚基类的关键词。虚基类的说明是

36、用 在定义派生类时,写在派生类名的后面。即: class派生类名: Virtual继承方式基类名。 28 【正确答案】 A 【试题解析】 本题考核纯虚函数的声明。声明纯虚函数的一般格式为: virtual类型函数名 (参数表 )=0; 29 【正确答案】 A 【试题解析】 本题考核静态数据成员与静态成员函数的定义与使用方式。静态数据成员是类中所有对象共享的成员,而不是某个对象的成员题中变量 n是静态数据成员,对象对其操作的结果具有叠加作用, main函数中先定义了 Test的对象*p,然后又 delete p,所以对静态数据 n进行了两次操作,分别是 “n+=2”和 “n-=3”, n的初始值

37、是 1,那么 n最后的值变为 0。 main函数最后通过调用静态函数getNum得到 n的值,并输出。 30 【正确答案】 C 【试题解析】 本题考核派生类的应用。本题中,类 B是类 A的私有派生类,在类 B的成员函数 fun中调用基类 A的成员函数 move,并传入实参 3和 5。在类 B的成员函数 f1中调用基类 A的成员函数 show,来显示基类数据成员 a和 b的值。主函数 main中,定义了派生类 B的对象 d,并赋初 值 3和 4然后调用对象d的成员函数 fun和 f1,通过上述对函数 fun和 f1的功能的描述可知,程序最后输出 6和 9。 31 【正确答案】 B 【试题解析】

38、本题考核派生类中构造函数的定义。 C+中派生类构造函数的一般语法规则为:派生类名:派生类名 (参数表 ):基类名 1 (参数表 1), .基类名 n (参数表 n ),子对象 1 (子对象参数表 1 ), .子对象 m (子对象参数表 m )派生类新增成的初始化语句; ,对照上述表达只有 B选项符合要求 32 【 正确答案】 C 【试题解析】 本题考核运算符的重载。假定已经作为某个类的成员函数重载了二元运算符 +,且 c1, c2都是该类的对象,则 c1.operator+(c2)与 c1+c2含义相同。如果 +作为该类的非成员函数重载,则 operator+(c1,c2)与 c1+c2含义相

39、同。同理,运算符 *作为成员函数重载,则 y*(x+)与 y.operator*(x+)含义相同,后缀 +作为友元函数重载,那么 x+与 operator+(x,0)含义相同,所以选项 C是正确的。 33 【正确答案】 C 【试 题解析】 本题考核运算符重载。 +和 *都是二元运算符,当作为成员函数重载时,参数表中只有一个参数,对应于第二个参数,而第一个操作数就是对象本身,仅以 this指针的形式隐藏在参数表中当作为非成员函数重载时有两个参数。 34 【正确答案】 A 【试题解析】 本题考核 C+流的概念和 I/O的格式化。 cin是 istream类的对象,即输入流对象。 ifstream是

40、输入文件流类不能定义个输出流对象。 C选项中执行语句序列 char *y=“PQMN“; cout y;后将输出字符串 “PQMN“。 getline函数功能是允许从输入流中读取多个字符,并且允许指定输入终止字符 (默认是换行字符 ),在读取完成后,从读取的内容中删除该终止字符,所以 D选项中的语句序列后 x中字符串应该是 “Happy new year“。 35 【正确答案】 C 【试题解析】 本题是一个综合应用考题,考核知识点包括类与对象的应用 (包括构造函数、拷贝构造函数 ),循环语句的使用、指针的使用。 分析程序:类 Stack的构造函数中默认参数为 10,即构造大小为 10的堆栈,成

41、员函数 push用于将数据压入堆栈中, pop用于将数据弹出堆栈。主函数 main中,先定义了类 Stack的对象引,初始大小为 10,通过 for循环先后将值 1, 2, 3、 4压入堆栈内,然后定义对象 s2,并用对象 s1来初始化,所以对象 s2的堆栈大小也为 10,同时也已压入数值 1、 2、 3、 4,第二个 for循环将 4、 3弹出并输出,然后将数值 6压入 s2的堆栈,最后将 s2堆栈中所剩下的值全部弹出,即 6、 2、 1。 36 【正确答案】 350 【试题解析】 在任意一棵二叉树中,度为。的结点 (即叶子结点 )总是比度为 2的结点多一个。根据完全二叉树的定义,在一棵完全

42、二叉树中,最多有 1个度为 1的 结点,因此,设一棵完全二叉树具有 n个结点,若 n为偶数,则在该二叉树中有 n/2个叶子结点以及 n/2-1个度为 2的结点,还有 1个是度为 1的结点;若 n为奇数,则在该二叉树中有 n/2+1个叶子结点以及 n/2个度为 2的结点,没有度为1的结点。本题中,完全二叉树共有 700个结点, 700是偶数,所以,在该二叉树中有 350个叶子结点以及 349个度为 2的结点,还有 1个是度为 1的结点。本题的正确答案为 350。 37 【正确答案】 分类性 【试题解析】 在面向对象方法中,类是具有共同属性、共同方法的对象的集合。所以,类是对象的抽象,它描述了属于

43、该对象类型的所有对象的性质。而一个具体的对象则是其对应类的一个实例。由此可知,类是关于对象性质的描述,它包括一组数据属性和在数据上的一组合法操作。类之间这种共享属性和操作的机制称为分类性。 38 【正确答案】 数据字典 【试题解析】 在结构化分析方法中,用于描述系统中所用到的全部数据和文件的文档称为数据字典。 39 【正确答案】 一对多 或 1对多 或 1:M 或 1:N,其中 M、 N大小写均可 【试题解析】 实体之间的联系可以归结为三类:一对一的联系,一 对多的联系,多对多的联系。设有两个实体集 E1和 E2,如果 E2中的每一个实体与 E1中的任意个实体 (包括零个 )有联系,而 E1中

44、的每一个实体最多与 E2中的一个实体有联系,则称这样的联系为 “从 E2到剧的一对多的联系 ”,通常表示为 “1: n的联系 ”。由此可见,工人和设备之间是一对多关系。 40 【正确答案】 算法或程序或流程图 【试题解析】 算法是问题处理方案正确而完整的描述。 41 【正确答案】 i =100或者 i 101 【试题解析】 本题考核循环语句。在上述题中,我们看到 s=s+i,又有 i+,它的含义是当 i满足条件时, i自加 1,然后再与前面的 s相加,值赋给 s。所以 for语句中,缺少上限表达式。因为是求 1 100的和,所以 i满足的条件为 i =100或者 i 101。 42 【正确答案

45、】 编译 【试题解析】 本题考核 C+的多态性。一个面向对象的系统常常要求一组具有相同基本语义的方法能在同一接口下为不同的对象服务,这就是所谓多态性。在C+语言中,多态性可分为两类:编译时的多态性和运行时的多态性编译时的多态性是通过函数重载和模板体现。其实现机制称为静态联编 (也译为静态绑定 ),即在编译阶段 决定执行哪个同名的被调用函数。运行时的多态性是通过体现的,其实现机制称为动态联编 (也译为动态绑定 ),即在编译阶段不能决定执行哪个同名的被调用函数,只在执行阶段才能依据要处理的对象类型来决定执行哪个类的成员函数。 43 【正确答案】 友元函数 【试题解析】 本题考核友元函数。 C+规定

46、,一个类的私有成员和保护成员,只能由其本身的成员来访问,不能被其他函数访问,这样形成了封装的概念,也保护了类本身的数据不致于受到破坏。但是,如果想让类中的成员数据可以被其他函数访问,可以通过友元函数声明,来分享类中的资 源。类的友元函数可以直接访问该类的所有成员,包括私有成员。 44 【正确答案】 Derived(int i):Base(i) 【试题解析】 本题考核派生类中构造函数。程序中,类 Derived是基类 Base的公有派生。在类 Derived的构造函数应该包括调用基类构造函数使基类的数据成员得以初始化。 45 【正确答案】 友元 【试题解析】 本题考核友元函数。 C+规定,一个类

47、的私有成员和保护成员,只能由其本身的成员来访问,不能被其他函数访问,这样形成了封装的概念,也保护了类本身的数据不致 于受到破坏但是,如果想让类中的成员数据可以被其他函数访问,可以通过友元函数声明,来分享类中的资源。 46 【正确答案】 cout Base:a 【试题解析】 本题考核作用域分辨符号的使用。作用域分辨符号是 “:”,它可以用来限定要访问的成员所在的类的名称。一般来说,在派生类中对基类成员的访问应该是惟一的。但是,多继承情况下可能造成对基类中某个成员的访问出现不惟一的情况,通过使用对象作用域分辨符可以解决这种对基类成员访问的二义性问题。题中派生类 Derived与基类 Base定义了数据成员 a,所以 要访问基类数据成员可以通过作用域分辨符来实现。 47 【正确答案】 拷贝构造 【试题解析】 本题考核拷贝构造函数的定义。拷贝构造函数是一种特殊的成员函数,它的作用是使用一个已存在的对象来初始化一个被创建的同类的对象。 48 【正确答案】 T &x,T &y,T &z 【试题解析】 本题考核函数

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