【计算机类职业资格】国家二级(C++)机试-试卷31及答案解析.doc
《【计算机类职业资格】国家二级(C++)机试-试卷31及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】国家二级(C++)机试-试卷31及答案解析.doc(16页珍藏版)》请在麦多课文档分享上搜索。
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
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 国家 二级 试试 31 答案 解析 DOC
