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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

【计算机类职业资格】国家二级(C++)机试-试卷31及答案解析.doc

1、国家二级(C+)机试-试卷 31 及答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.下列有关内联函数的叙述中,正确的是( )。(分数:2.00)A.内联函数在调用时发生控制转移B.内联函数必须通过关键字 inline 来定义C.内联函数是通过编译器来实现的D.内联函数函数体的最后一条语句必须是 return 语句2.有如下程序: #include using namespace std; class Pair int m,n; public: Pair(int j,int k):m(j),n(k) int get() return m; int

2、 get() const return m+n; ; int main() Pair a(3,5); const Pair b(3,5); couta.get()A.33B.38C.83D.883.下列选项中不属于结构化程序设计原则的是( )。(分数:2.00)A.可封装B.自顶向下C.模块化D.逐步求精4.已知函数 f 的原型是 void f(int *a, long ,变量 v1、v2 的定义是:int v1; long v2;下列调用语句中正确的是( )。(分数:2.00)A.f(v1,B.f(v1,v2);C.f(D.f(5.有如下程序: #include using namespac

3、e 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:Point public: Circle(int r):radius(r) int GetRadius() return radius; private: void SetRadius(int r) radius=r; int radius; ; int main() Circle c1(5); c1.Set

4、X(1); / c1.SetY(2); / c1.SetRadius(10); / coutA.B.C.D.6.一个教师可讲授多门课程,一门课程可由多个教师讲授。则实体教师和课程间的联系是( )。(分数:2.00)A.1:1 联系B.1:m 联系C.m:1 联系D.m:n 联系7.有如下程序: #include using namespace std; void f(int x, int x=y; y=z; int main() int x=0,y=1; f(x,y); coutxyA.00B.01C.10D.118.有如下程序: #include #include using namespa

5、ce std; class Animal public: virtual string GetType() const return “Animal“; virtual string GetVoice() const return “Voice“; ; class Dog:public Animal public: string GetType() const return “Dog“; string GetVoice() const return “Woof“; ; class Cat:public Animal public: string GetType() const return “

6、Cat“; string GetVoice() const return “Miaow“; ; void Type(Animal Speak(d); cout“ - “; Cat c; Type(c); cout“ speak “; Speak(c); coutA.DogspeakVoice-CatspeakVoiceB.DogspeakWoof-CatspeakMiaowC.AnimalspeakVoice-AnimalspeakVoiceD.AnimalspeakWoof-AnimalspeakMiaow9.有表示公司和职员及工作的三张表,职员可在多家公司兼职。其中公司 C(公司号,公司名

7、,地址,注册资本,法人代表,员工数),职员 S(职员号,姓名,性别,年龄,学历),工作 W(公司号,职员号,工资),则表 W 的键(码)为(分数:2.00)A.公司号,职员号B.职员号,工资C.职员号D.公司号,职员号,工资10.有如下类声明: class Te public: Te(); / Te te; / Te *pte; / void f(Te / ;在标注号码的的四个语句中,错误的是(分数:2.00)A.B.C.D.11.要利用 C+流实现输入输出的各种格式控制,必须在程序中包含的头文件是(分数:2.00)A.fstreamB.istreamC.cstdlibD.iomanip12.

8、设 c1 和 c2 是类 MyClass 的对象,若将前缀运算符“-“和运算符“/“作为类 MyClass 的友元函数重载,则表达式-c1/c2 等价于(分数:2.00)A.operator/(c1.operator-(),c2)B.operator/(operator-(c1),c2)C.c1.operator-().operator/(c2)D.c2.operator/(operator-(c1)13.下列有关类的表述中,正确的是(分数:2.00)A.含有虚函数的类不能被实例化B.派生类不能访问基类的保护成员C.派生类只能隐含调用基类的构造函数D.纯虚函数没有函数体14.下列叙述中正确的是

9、(分数:2.00)A.每一个结点有两个指针域的链表一定是非线性结构B.所有结点的指针域都为非空的链表一定是非线性结构C.循环链表是循环队列的链式存储结构D.线性结构的存储结点也可以有多个指针15.下列关于 C+函数的说明中,正确的是( )。(分数:2.00)A.内联函数就是定义在另一个函数体内部的函数B.函数体的最后一条语句必须是 return 语句C.标准 C+要求在调用一个函数之前,必须先声明其原型D.编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式16.下列关于虚函数的表述中,正确的是(分数:2.00)A.虚函数不得是静态成员函数B.抽象类中的成员函数都是纯虚函数C.只能通过

10、指针或引用调用虚函数D.抽象类中的成员函数都是虚函数17.计算机软件包括(分数:2.00)A.算法和数据B.程序和数据C.程序和文档D.程序、数据及相关文档18.下列有关类成员的叙述中,错误的是(分数:2.00)A.友元函数不是类的成员函数B.类成员的默认访问权限是私有的C.类成员函数必须声明为公有的D.类的静态数据成员可以是常成员19.下列关于基类和派生类关系的叙述中,正确的是(分数:2.00)A.派生类中的成员可以访问基类中的任何成员B.每个类最多只能有一个直接基类C.对基类构造函数的调用不能出现在派生类构造函数的初始化列表中D.派生类除了继承基类的成员,还可以定义新的成员20.在函数中,

11、可以用 auto、extern、register 和 static 这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是( )。(分数:2.00)A.autoB.externC.registerD.static21.有如下程序:class Base public:int data;class Derived1 : public Base ;class Derived2 : protected Base ;int main()Derived1 d1;Derived2 d2;d1.data = 0; / d2.data = 0; / return 0;下列关于程序编译结

12、果的描述中,正确的是( )。(分数:2.00)A.皆无编译错误B.有编译错误,无编译错误C.无编译错误,有编译错误D.皆有编译错误22.数据库设计中反映用户对数据要求的模式是( )。(分数:2.00)A.内模式B.概念模式C.外模式D.设计模式23.下列关于基类和派生类关系的叙述中,正确的是(分数:2.00)A.派生类中的成员可以访问基类中的任何成员B.每个类最多只能有一个直接基类C.基类的构造函数必须在派生类的构造函数体中调用D.派生类除了继承基类的成员,还可以定义新的成员24.下列叙述中正确的是( )。(分数:2.00)A.在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化B.在栈中,栈

13、顶指针不变,栈中元素随栈底指针的变化而动态变化C.在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化D.以上说法均不正确25.已知 int 型变量 y 的初值是 5,但在执行语句“f(y);“后,y 的值被改变,因此该语句所调用函数的原型是(分数:2.00)A.voidf(intx);B.voidf(int*x);C.voidf(constint*x);D.voidf(int26.有如下类定义: class Point public: void SetX(int xx) x=xx; protected: void SetY(int yy) y=yy; private: int x,y;

14、; class Circle:Point public: int GetRadius() return radius; private: void SetRadius(int r) radius=r; int radius; ;派生类 Circle 中不可访问成员的个数为(分数:2.00)A.2B.3C.4D.627.有表示公司和职员及工作的三张表,职员可在多家公司兼职。其中公司 C(公司号,公司名,地址,注册资本,法人代表,员工数),职员 S(职员号,姓名,性别,年龄,学历),工作 W(公司号,职员号,工资),则表 W 的键(码)为(分数:2.00)A.公司号,职员号B.职员号,工资C.职员

15、号D.公司号,职员号,工资28.当一个派生类对象结束其生命周期时,自动做的事情是(分数:2.00)A.先调用派生类的析构函数后调用基类的析构函数B.先调用基类的析构函数后调用派生类的析构函数C.如果派生类没有定义析构函数,则只调用基类的析构函数D.如果基类没有定义析构函数,则只调用派生类的析构函数29.下列叙述中正确的是(分数:2.00)A.所有数据结构必须有根结点B.所有数据结构必须有终端结点(即叶子结点)C.只有一个根结点,且只有一个叶子结点的数据结构一定是线性结构D.没有根结点或没有叶子结点的数据结构一定是非线性结构30.在公有继承的情况下,在派生类中能够访问的基类成员包括(分数:2.0

16、0)A.公有成员B.保护成员C.公有成员、保护成员和私有成员D.公有成员和保护成员31.假定在一个程序中执行到语句: cout12.345_A.setprecision(3)B.fixedC.setfill(*)D.setw(8)32.下列关于运算符重载的叙述中,正确的是(分数:2.00)A.运算符重载的作用是使已有的运算符作用于类的对象B.通过运算符重载机制可以为 C+语言扩充新的运算符C.重载运算符的操作数类型可以全部为基本类型D.C+中已有的任何运算符都可以重载33.有如下类声明:class SAMPLE int n;public:SAMPLE(int i=0):n(i) void se

17、tValue(int n0);下列关于 getValue 成员函数的定义中,正确的是( )。(分数:2.00)A.SAMPLE:setValue(intn0)n=n0;B.voidSAMPLE:setValue(intn0)n=n0;C.voidsetValue(intn0)n=n0;D.setValue(intn0)n=n0;34.字面常量 42、4.2、42L 的数据类型分别是( )。(分数:2.00)A.long、double、intB.long、float、intC.int、double、longD.int、float、long35.有如下类定义:class AA int a;publ

18、ic: AA(int n=0):a(n) ;class BB :public AA public: BB(int n);其中横线处缺失的部分是( )。(分数:2.00)A.:a(n)B.:AA(n)C.a(n);D.a=n;36.下列关于二叉树的叙述中,正确的是( )。(分数:2.00)A.叶子结点总是比度为 2 的结点少一个B.叶子结点总是比度为 2 的结点多一个C.叶子结点数是度为 2 的结点数的两倍D.度为 2 的结点数是度为 1 的结点数的两倍37.计算数列第 n 项的函数定义如下: int a(int n) if (n = 0) return 0; else if (n = 1) r

19、eturn 1; else if (n = 2) return 2; else return a(n-1)+a(n-3); 若执行函数调用表达式 a(4),函数 a 被调用的次数是(分数:2.00)A.3B.4C.5D.638.设循环队列的存储空间为 Q(1:35),初始状态为 front=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为(分数:2.00)A.15B.16C.20D.0 或 3539.下列关于重载运算符错误的是(分数:2.00)A.运算符:不能被重载B.重载类型转换运算符不需要声明返回值C.-既可以作为一元运算符,又可以作

20、为二元运算符被重载D.运算符不能被重载40.在下列表述中,用来正确表示“相对于当前位置“文件定位方式的是(分数:2.00)A.ios_base:curB.ios_base:begC.ios_base:outD.ios_base:end二、基本操作题(总题数:1,分数:2.00)41.请使用 VC6 或使用【答题】菜单打开考生文件夹 proj1 下的工程 proj1。程序中位于每个“ERROR*ound*”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为:value=63number=1 注意:只修改每个“ERROR*found*”下的那一行,不要改动程序中的其他内容。#include

21、iostreamusingnamespacestd;classMyClassint*P;constintN;public:ERROR*found*MyClass(intval):N=1P=newint;*p=val;ERROR*found*MyClass()delete*p;)friendvoidprint(MyClassobj);ERROR*found*voidMyClass:print(MyClassobj)cout“value=“*(objP)end1;cout“number:“objNend1;intmain()MyClassobj(63);print(obj);return0;(分数

22、:2.00)_三、简单应用题(总题数:1,分数:2.00)42.请使用 VC6 或使用【答题】菜单打开考生文件夹 proj2 下的工程 proj2,此工程包含有一个源程序文件 proj2cpp,其中定义了 Stack 类和 ArrayStaek 类。Stack 是一个用于表示数据结构“栈”的类,栈中的元素是字符型数据。Stack 为抽象类,它只定义了栈的用户接口,如下所示:公有成员函数功能 push入栈:在栈顶位置添加一个元素 pop 退栈:取出并返回栈顶元素 ArrayStack 是 Stack 的派生类,它实现了 Stack 定义的接口。ArrayStack 内部使用动态分配的字符数组作为

23、栈元素的存储空间。数据成员maxSize 表示的是栈的最大容量,top 用于记录栈顶的位置。成员函数 push 和 poP 分别实现具体的人栈和退栈操作。请在程序中的横线处填写适当的代码,然后删除横线,以实现上述功能。此程序的正确输出结果应为:a,b,cc,b,a 注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“*found*”。proj2cpp#includeiostreamusingnamespacestd;clasSStackpublic:virtualvoidpush(charc)=0;virtualcharpop()=0;classArrayStack:p

24、ublicStackchar*p;intmaxSize;inttop;public:ArrayStack(intS)top=0;maxSize=s;*found*p=_;ArrayStack()*found*_;voidpush(charc)if(top=maxSize)cerr“Overflow!n“;return;*found*_;top+;charpop()if(top=0)cerr“Underflow!n“;return0;top-;*found*_;voidf(Stack class Pair int m,n; public: Pair(int j,int k):m(j),n(k)

25、int get() return m; int get() const return m+n; ; int main() Pair a(3,5); const Pair b(3,5); couta.get()A.33B.38 C.83D.88解析:解析:本题考查常对象、常成员函数及构造函数。常对象只能调用常成员函数,所以本题中,对象a 为普通对象,执行 a.get()后,会执行默认构造函数,输出 3;对象 b 为常对象,执行 b.get()后,会执行常构造函数,输出 8。3.下列选项中不属于结构化程序设计原则的是( )。(分数:2.00)A.可封装 B.自顶向下C.模块化D.逐步求精解析:解析

26、:结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用 goto 语句,所以选择 A)。4.已知函数 f 的原型是 void f(int *a, long ,变量 v1、v2 的定义是:int v1; long v2;下列调用语句中正确的是( )。(分数:2.00)A.f(v1,B.f(v1,v2);C.f(D.f( 解析:解析:函数参数的 3 种传递方式:将变量名作为形参和实参,即传值方式;传递变量指针;引用形参。本题中函数 f 的第一个形参为指针,那么调用 f 函数时,第一个参数必须是地址,所以必须是class Point public: Point(int xx=0,int y

27、y=0):x(xx),y(yy) void SetX(int xx) x=xx; void SetY(int yy) y=yy; private: int x,y; ; class Circle:Point public: Circle(int r):radius(r) int GetRadius() 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); / coutA

28、.B.C.D. 解析:解析:本题考查对象成员的引用,在类外引用对象的数据成员时,只能访问 public 成员而不能访问 private 成员所以 C 选项错误,D 选项正确,派生类公用继承基类,但是不能继承基类的私有成员,所以执行 c1.SetX(1)错误,同理 B 选项错误。6.一个教师可讲授多门课程,一门课程可由多个教师讲授。则实体教师和课程间的联系是( )。(分数:2.00)A.1:1 联系B.1:m 联系C.m:1 联系D.m:n 联系 解析:解析:因为一个教师可讲授多门课程,而一门课程又能由多个老师讲授所以他们之间是多对多的关系,可以表示为 m:n。7.有如下程序: #include

29、 using namespace std; void f(int x, int x=y; y=z; int main() int x=0,y=1; f(x,y); coutxyA.00 B.01C.10D.11解析:解析:参数传递有三种: 传值(value),传址(address),和传引用(reference) 传值时子函数(被调用者)复制父函数(调用者)传递的值,这样子函数无法改变父函数变量的值。 传址时父函数将变量的地址传递给子函数,这样子函数可以能过改写地址里的内容改变父函数中的变量。传引用则是一种看起来像传值调用,而实际上功能同传址一样的传递方式。子函数可以改写父函数的变量值。本题中

30、函数f 中第一个参数为传值调用,第二个参数为传引用,其中 y 的值在执行完函数 f 就变为了 x 值,所以输出00,A 选项正确。8.有如下程序: #include #include using namespace std; class Animal public: virtual string GetType() const return “Animal“; virtual string GetVoice() const return “Voice“; ; class Dog:public Animal public: string GetType() const return “Dog“;

31、 string GetVoice() const return “Woof“; ; class Cat:public Animal public: string GetType() const return “Cat“; string GetVoice() const return “Miaow“; ; void Type(Animal Speak(d); cout“ - “; Cat c; Type(c); cout“ speak “; Speak(c); coutA.DogspeakVoice-CatspeakVoice B.DogspeakWoof-CatspeakMiaowC.Anim

32、alspeakVoice-AnimalspeakVoiceD.AnimalspeakWoof-AnimalspeakMiaow解析:解析:本题考查虚函数的运用,本题中定义 Dogd;Type(d)时,执行类 class 的 Type 函数,输出Dog,然后输出 speak,然后执行基类的 Speak 函数输出 Voice,最后输出-,同理 cat 输出类似,所以结果为 A 选项正确。9.有表示公司和职员及工作的三张表,职员可在多家公司兼职。其中公司 C(公司号,公司名,地址,注册资本,法人代表,员工数),职员 S(职员号,姓名,性别,年龄,学历),工作 W(公司号,职员号,工资),则表 W 的

33、键(码)为(分数:2.00)A.公司号,职员号 B.职员号,工资C.职员号D.公司号,职员号,工资解析:解析:由于职员可以再多加公司兼职,表 W 的键(码)应为公司关系和职员关系的主码,即公司号和职员号。10.有如下类声明: class Te public: Te(); / Te te; / Te *pte; / void f(Te / ;在标注号码的的四个语句中,错误的是(分数:2.00)A.B. C.D.解析:解析:本题考查类的定义和对象的定义,题目中定义类 Te 中又定义了 Te 类型的对象 te,这样陷入循环中,所以是错误的,答案为 B 选项。11.要利用 C+流实现输入输出的各种格式

34、控制,必须在程序中包含的头文件是(分数:2.00)A.fstreamB.istreamC.cstdlibD.iomanip 解析:解析:C+中 I/O 流控制头文件是 iomanip,它负责实现输入输出的各种格式控制;答案为 D。12.设 c1 和 c2 是类 MyClass 的对象,若将前缀运算符“-“和运算符“/“作为类 MyClass 的友元函数重载,则表达式-c1/c2 等价于(分数:2.00)A.operator/(c1.operator-(),c2)B.operator/(operator-(c1),c2) C.c1.operator-().operator/(c2)D.c2.op

35、erator/(operator-(c1)解析:解析:友元函数不是类的成员函数,所以友元函数的调用不需要使用类对象;另外运算符重载不改变运算符的优先级,所以先执行“-“运算符重载函数,之后执行“/“运算符重载函数,选项 A、C、D 错误,B 正确,答案为 B。13.下列有关类的表述中,正确的是(分数:2.00)A.含有虚函数的类不能被实例化B.派生类不能访问基类的保护成员C.派生类只能隐含调用基类的构造函数D.纯虚函数没有函数体 解析:解析:含有纯虚函数的类不能被实例化,选项 A 错误;基类的保护成员就是为了派生类的访问而设计的,选项 B 错误;派生类构造函数的初始化列表通常都要显式调用基类的

36、构造函数,选项 C 错误;当基类中不能为虚函数给出一个有意义的实现时,将其声明为纯虚函数,所以纯虚函数没有定义函数体,选项D 正确;答案为 D。14.下列叙述中正确的是(分数:2.00)A.每一个结点有两个指针域的链表一定是非线性结构B.所有结点的指针域都为非空的链表一定是非线性结构C.循环链表是循环队列的链式存储结构D.线性结构的存储结点也可以有多个指针 解析:解析:一个非空的数据结构如果满足以下两个条件:有且只有一个根结点;每一个结点最多有一个前件,也最多有一个后件,则称为线性结构,在数据结构中习惯称为线性表。双向链表结点具有两个指针域,属于线性结构,A 选项错误。循环链表所有结点的指针域

37、都为非空,属于线性结构,B 选项错误。循环链表是链表,循环队列属于队列,队列只能在队尾入队,在排头退队,链表可以在任何位置插入、删除,C 选项错误。双向链表结点具有多个指针域,D 选项正确。15.下列关于 C+函数的说明中,正确的是( )。(分数:2.00)A.内联函数就是定义在另一个函数体内部的函数B.函数体的最后一条语句必须是 return 语句C.标准 C+要求在调用一个函数之前,必须先声明其原型 D.编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式解析:解析:一般函数进行调用时,要将程序执行权转到被调用函数中,然后再返回到调用它的函数中;而内联函数在调用时,是将调用表达式用

38、内联函数体来替换,而不是在定义在另一个函数体内,所以 A 选项错误。函数可以没有返回值,所以就不需要 return 了,如果被调函数在调用函数之前已经定义,那么就不需要声明,所以 C 选项错误,正确选项为 D。16.下列关于虚函数的表述中,正确的是(分数:2.00)A.虚函数不得是静态成员函数 B.抽象类中的成员函数都是纯虚函数C.只能通过指针或引用调用虚函数D.抽象类中的成员函数都是虚函数解析:解析:在函数形参表后面添加“=0“可以指定该函数为纯虚函数,类中含有一个或多个纯虚函数,该类就是抽象类,选项 B 错误;可以通过对象指针或引用调用虚函数,也可以使用对象直接调用虚函数,只不过使用对象直

39、接调用虚函数和调用普通成员函数一样,没有动态绑定,不具有多态性,选项 C 错误;抽象类中的成员函数至少有一个纯虚函数,对虚函数没有要求,选项 D 错误;一个函数定义为虚函数,它就是动态绑定的,在派生类中可以覆盖,而静态成员函数是属于整个类,不属于某个类对象,对于每个类来说只有一份代码,所有同类的对象共享这份代码,没有动态绑定的必要,选项 A 正确;答案为 A。17.计算机软件包括(分数:2.00)A.算法和数据B.程序和数据C.程序和文档D.程序、数据及相关文档 解析:解析:计算机软件由两部分组成:一是机器可执行的程序和数据;二是机器不可执行的,与软件开发、运行、维护、使用等有关的文档。故 D

40、 选项正确。18.下列有关类成员的叙述中,错误的是(分数:2.00)A.友元函数不是类的成员函数B.类成员的默认访问权限是私有的C.类成员函数必须声明为公有的 D.类的静态数据成员可以是常成员解析:解析:友元函数不是类的成员函数,选项 A 正确;类成员的默认访问权限是私有的,选项 B 正确;类的静态数据成员可以使常成员,选项 D 正确;类的成员函数可以声明为:public、protected 和private,选项 C 错误;答案为 C。19.下列关于基类和派生类关系的叙述中,正确的是(分数:2.00)A.派生类中的成员可以访问基类中的任何成员B.每个类最多只能有一个直接基类C.对基类构造函数

41、的调用不能出现在派生类构造函数的初始化列表中D.派生类除了继承基类的成员,还可以定义新的成员 解析:解析:派生类对基类成员的访问权限由基类成员的访问标识和类派生列表中的访问标识共同决定的,选项 A 错误;多重继承的派生类可以有多个直接基类,选项 B 错误;派生类构造函数可以隐式调用基类的默认构造函数初始化对象的基类部分,也可以在派生类构造函数初始化列表中显示调用基类构造函数,选项 C 错误;答案为 D。20.在函数中,可以用 auto、extern、register 和 static 这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是( )。(分数:2.00)A.

42、auto B.externC.registerD.static解析:解析:变量的存储方法分为静态存储和动态存储两大类,包含 4 种:自动的(auto)、静态的(static)、寄存器的(register)、外部的(extern)。变量如果没有说明存储类型,那么默认就是 auto。21.有如下程序:class Base public:int data;class Derived1 : public Base ;class Derived2 : protected Base ;int main()Derived1 d1;Derived2 d2;d1.data = 0; / d2.data = 0;

43、 / return 0;下列关于程序编译结果的描述中,正确的是( )。(分数:2.00)A.皆无编译错误B.有编译错误,无编译错误C.无编译错误,有编译错误 D.皆有编译错误解析:解析:本题考查公用继承和保护继承对基类成员的访问属性。在公用继承中,基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有。在受保护继承中,基类的公用成员和保护成员在派生类中成了保护成员,其私有成员仍为基类私有。本题中 Derived1 公用继承 Base,所以编译正确,Derived2 保护继承 Base,所以编译不正确。22.数据库设计中反映用户对数据要求的模式是( )。(分数:2.00)A.

44、内模式B.概念模式C.外模式 D.设计模式解析:解析:数据库系统的三级模式是概念模式、外模式和内模式。概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户公共数据视图。外模式也称子模式或用户模式,它是用户的数据视图,给出了每个用户的局部数据描述,所以选择 C)。内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法。23.下列关于基类和派生类关系的叙述中,正确的是(分数:2.00)A.派生类中的成员可以访问基类中的任何成员B.每个类最多只能有一个直接基类C.基类的构造函数必须在派生类的构造函数体中调用D.派生类除了继承基类的成员,还可以定义新的成员 解析:解析:本题考查继承与派生,派

45、生类中的成员访问基类中的成员由派生方式决定,一个类可以有多个直接基类,如果基类中定义了缺省构造函数或根本没有定义任何一个构造函数(此时,由编译器自动生成缺省构造函数)时,在派生类构造函数的定义中可以省略对基类构造函数的调用,即省略“()“。本题答案为 D。24.下列叙述中正确的是( )。(分数:2.00)A.在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化B.在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化C.在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化 D.以上说法均不正确解析:解析:栈是先进后出的数据结构,在整个过程中,栈底指针不变,入栈与出栈操作均由栈顶指针的变化

46、来操作,所以选择 C)。25.已知 int 型变量 y 的初值是 5,但在执行语句“f(y);“后,y 的值被改变,因此该语句所调用函数的原型是(分数:2.00)A.voidf(intx);B.voidf(int*x);C.voidf(constint*x);D.voidf(int 解析:解析:参数传递有三种: 传值(value),传址(address),和传引用(reference) 传值时子函数(被调用者)复制父函数(调用者)传递的值,这样子函数无法改变父函数变量的值,A 选项属于此类。 传址时父函数将变量的地址传递给子函数,这样子函数可以能过改写地址里的内容改变父函数中的变量。 传引用则

47、是一种看起来像传值调用,而实际上功能同传址一样的传递方式。子函数可以改写父函数的变量值。D 选项属于此类,所以 D 选项正确。26.有如下类定义: class Point public: void SetX(int xx) x=xx; protected: void SetY(int yy) y=yy; private: int x,y; ; class Circle:Point public: int GetRadius() return radius; private: void SetRadius(int r) radius=r; int radius; ;派生类 Circle 中不可访问成员的个数为(分数:2.00)A.2 B.3C.4D.6解析:解析:本题考查派生类对基类成员的访问属性,派生类无论何种继承,派生类的成员函数都不能访问基类的私有成员,所以 Circle 不可访问的个数有 2 个,A 选项正确。27.有表示公司和职员及工作的三张表,职员可在多家公司兼职。其中公司 C(公司号,公司名,地址,注册资本,法人代表,员工数),职员

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