【计算机类职业资格】二级C++笔试-357及答案解析.doc

上传人:孙刚 文档编号:1324596 上传时间:2019-10-17 格式:DOC 页数:26 大小:81KB
下载 相关 举报
【计算机类职业资格】二级C++笔试-357及答案解析.doc_第1页
第1页 / 共26页
【计算机类职业资格】二级C++笔试-357及答案解析.doc_第2页
第2页 / 共26页
【计算机类职业资格】二级C++笔试-357及答案解析.doc_第3页
第3页 / 共26页
【计算机类职业资格】二级C++笔试-357及答案解析.doc_第4页
第4页 / 共26页
【计算机类职业资格】二级C++笔试-357及答案解析.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

1、二级 C+笔试-357 及答案解析(总分:98.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.若有如下程序:#includeiostreamusing namespaces std;int s=0;class samplestatic int n;public:sample(int i)n=i;static void add()s+=n;);int sample:s=0;int main()sample a(2),b(5);sample:add();coutsendl;return 0;程序运行后的输出结果是(分数:2.00)A.2B.5C.7D.32.有如下程序

2、:#includeiostream.husing namespace std;class Demopublic:Demo() cont“default constructor/n“;Demo(const Demo int main() C obj; return 0;执行后的输出结果是(分数:2.00)A.CBAB.BACC.ACBD.ABC27.下列关于 E-R图的描述中正确的是(分数:2.00)A.E-R图只能表示实体之间的联系B.E-R图只能表示实体和实体之间的联系C.E-R图只能表示实体和属性D.E-R图能表示实体、属性和实体之间的联系28.下面有关重载函数的说法中正确的是(分数:2.

3、00)A.重载函数必须具有不同的返回值类型B.重载函数形参个数必须不同C.重载函数必须有不同的形参列表D.重载函数名可以不同29.考虑函数原型 void test(int a, int b=7,char z=*),下面的函数调用中,属于不合法调用的是(分数:2.00)A.test(5);B.test(5,8);C.test(6,#);D.test(0,0,*);30.下列描述中正确的是(分数:2.00)A.软件工程只是解决软件项目的管理问题B.软件工程主要解决软件产品的生产率问题C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则D.软件工程只是解决软件开发中的技术问题31.有以下类

4、定义class MyClassprivate:int id;char gender;char*phone;public:MyClass():id(0),gender(#),phone(NULL)MyClass(int no,char ge=#,char*ph=NULL)id=no;gender=ge;phone=ph;下列类对象定义语句中错误的是(分数:2.00)A.MyClassmyObj;B.MyClassmyObj(11,“13301111155“);C.MyClassmyObj(12,m);D.MyClassmyObj(12);32.下列关于模板的叙述中,错误的是(分数:2.00)A.

5、模板声明中的第一个符号总是关键字 templateB.在模板声明中用和括起来的部分是模板的形参表C.类模板不能有数据成员D.在一定条件下函数模板的实参可以省略33.下列对变量的引用中,错误的是(分数:2.00)A.int a; int else return 1+GetLen(str+1);(分数:2.00)填空项 1:_42.下面程序的输出结果是_。#includeiostreamusing namespace std;int x;void funA(intreturn m;(分数:2.00)填空项 1:_49.下列程序的输出结果是_。#includeiostreamusing namesp

6、ace std;class basepublic:int n;base(int x) n=x;virtual void set(int m) n=m;cout n ;class deriveA:public basepublic:deriveA(int x):base(x) void set(int m) n += m;cout n ;class deriveB:public basepublic:deriveB(int x):base(x) void set(int m) n +m; cout n ;int main()deriveA d1(1);deriveBd2(3);base *pba

7、se;pbase=public:sample(int i)n=i;static void add()s+=n;);int sample:s=0;int main()sample a(2),b(5);sample:add();coutsendl;return 0;程序运行后的输出结果是(分数:2.00)A.2B.5 C.7D.3解析:解析 本题考核静态数据成员和静态成员函数的应用;程序中定义一个类 sample,它包括一个静态数据成员 n和一个静态成员函数 add,并在类的构造函数中给类私有静态数据成员 n赋值。在主函数 main中,定义对象 a(2)时,通过构造函数使静态数据成员 n的值变为

8、2,在定义对象 b(5)时,通过构造函数使静态数据成员 n=5(覆盖了前面的 n=2),再执行 sample:add()使全局变量 s=5。2.有如下程序:#includeiostream.husing namespace std;class Demopublic:Demo() cont“default constructor/n“;Demo(const Demo 。在 C+中,允许在函数的说明或定义时给一个或多个参数指定默认值。但一旦为某个给定参数定义了缺省值,必须为后继的所有参数也定义缺省值。由此可知,选项 D是错误的。8.下列叙述中正确的是(分数:2.00)A.在模块化程序设计中,一个模

9、块应尽量多的包括与其他模块联系的信息B.在自顶向下、逐步细化的设计过程中,首先应设计解决问题的每一个细节C.在模块化程序设计中,一个模块内部的控制结构也要符合结构化原则 D.在程序设计过程中,不能同时采用结构化程序设计方法与模块化程序设计方法解析:解析 选项 A错误,在模块化设计中,要求将一个大程序按人们能理解的大小规模进行分解,使每个模块都能易于理解,各模块的功能尽量单一,各模块之间的联系尽量的少。选项 B错误,自顶向下、逐步细化的设计过程,土要包括两个方面:将复杂问题的解法分解和细化成由若干模块组成的层次结构:将一个模块的功能逐步分解细化为一系列的处理步骤,直到某种程序设计语言的语句或某种

10、机器指令。即在自顶向下、逐步细化的设计过程中,是按照先全局后局部、先整体后细节、先抽象后具体的方法设计程序。选项 D错误,由于在模块化程序设计中,一个模块内部的控制结构也要符合结构化原则,所以,在程序设计过程中,结构化程序设计方法与模块化程序设计方法是要同时采用的。选项 C为正确答案。9.在下面的 4个关键字中用来说明虚函数的是(分数:2.00)A.virtual B.publicC.protectedD.private解析:解析 C+中说明虚函数的方法为:virtual类型说明符函数名(参数表);。其中,被关键词 virtual说明的函数称为虚函数。10.已知下列语句中的 x和 y都是 in

11、t型变量,其中错误的语句是(分数:2.00)A.x=y+;B.x=+y;C.(x+y)+ D.+x=y;解析:解析 本题考核 C+表达式类型及求值规则。 自加运算符+是单目运算符,运算对象必须为变量,不能是常量和表达式,C 选项中+的对象是表达式,故错误。11.有如下程序:#includeiostreamusing namespace std;class AAint n;public:AA(int k):n(k)int get()return n;)int get()constreturn n+1;int main()AA a(5);const AA b(6);coutaget()bget()

12、;return 0;执行后的输出结果是(分数:2.00)A.55B.57 C.75D.77解析:解析 本题考核常成员函数和函数的重载。所谓函数重载,是指同一个函数名可以对应着多个函数的实现,类 AA中定义了两个 get()函数,一个为普通成员函数,另一个为常成员函数。一般对象 a既可以调用普通成员函数 get,也可以调用常成员函数 get,但是由于常成员函数不能更新对象的数据成员,所以题中通过对象 a调用的函数为普通成员函数 get(),返回值为 5。常对象 b只能调用常成员函数,所以题中通过对象 b调用的函数为常成员函数 get(),返回值为 7。12.用树形结构来表示实体之间联系的模型称为

13、(分数:2.00)A.关系模型B.层次模型 C.网状模型D.数据模型解析:解析 在数据库系统中,由于采用的数据模型不同,相应的数据库管理系统 (DBMS)也不同。目前常用的数据模型有 3种:层次模型、网状模型和关系模型。在层次模型中,实体之间的联系是用树结构来表示的,其中实体集(记录型)是树中的结点,而树中各结点之间的连线表示它们之间的关系。所以,本题的正确答案是 B。13.C+流中重载了运算符,它是一个(分数:2.00)A.用于输出操作的成员函数B.用于输入操作的成员函数C.用于输入操作的非成员函数D.用于输出操作的非成员函数 解析:解析 本题考核运算符的重载。C+流中重载了和,其中用于有格

14、式输入,用于有格式输出,且都重载为非成员函数。14.重载输入流运算符必须使用的原型为(分数:2.00)A.ostreamint main() C obj; return 0;执行后的输出结果是(分数:2.00)A.CBAB.BACC.ACBD.ABC 解析:解析 本题考核类的继承与派生。派生类构造函数执行的一般次序如下:首先调用基类构造函数,调用顺序按照它们被继承时说明的顺序。然后调用子对象的构造函数,调用顺序按照它们在类中的说明顺序。最后是派生类构造函数中的内容。题中,类 A是基类,类 C是基类 A的派生类,类 B的对象 b是类 C的私有成员。所以最后的输出为 ABC。27.下列关于 E-R

15、图的描述中正确的是(分数:2.00)A.E-R图只能表示实体之间的联系B.E-R图只能表示实体和实体之间的联系C.E-R图只能表示实体和属性D.E-R图能表示实体、属性和实体之间的联系 解析:解析 E-R 图中,用 3种图框分别表示实体、属性和实体之间的联系:矩形框表示实体,框内标明实体名;椭圆状框表示实体的属性,框内标明属性名;菱形框表示实体间的联系,框内标明联系名;实体与其属性之间以无向边连接,菱形框与相关实体之间也用无向边连接,并在无向边旁标明联系的类型。综上所述,用 E-R图不仅可以简单明了地描述实体及其相互之间的联系,还可以方便地描述多个实体集之间的联系和一个实体集内部实体之间的联系

16、。选项 A、B、C 的说法都错误,本题的正确答案是 D。28.下面有关重载函数的说法中正确的是(分数:2.00)A.重载函数必须具有不同的返回值类型B.重载函数形参个数必须不同C.重载函数必须有不同的形参列表 D.重载函数名可以不同解析:解析 函数重载允许用同一个函数名定义多个函数。被重载的函数必须要有不同的形参列表。不可以根据函数返回值类型来重载函数。29.考虑函数原型 void test(int a, int b=7,char z=*),下面的函数调用中,属于不合法调用的是(分数:2.00)A.test(5);B.test(5,8);C.test(6,#); D.test(0,0,*);解

17、析:解析 本题考核函数的调用。题中函数声明带有默认参数,那么在 C选项的调用中,将会把字符型实参#赋值给整型形参 b,这不符合参数传递规则。30.下列描述中正确的是(分数:2.00)A.软件工程只是解决软件项目的管理问题B.软件工程主要解决软件产品的生产率问题C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则 D.软件工程只是解决软件开发中的技术问题解析:解析 软件工程学是研究软件开发和维护的普遍原理与技术的一门工程学科。所谓软件工程是指,采用工程的概念、原理、技术和方法指导软件的开发与维护。软件工程学的主要研究对象包括软件开发与维护的技术、方法、工具和管理等方面。由此可见,选项

18、A、B 和 D的说法均不正确,选项 C正确。31.有以下类定义class MyClassprivate:int id;char gender;char*phone;public:MyClass():id(0),gender(#),phone(NULL)MyClass(int no,char ge=#,char*ph=NULL)id=no;gender=ge;phone=ph;下列类对象定义语句中错误的是(分数:2.00)A.MyClassmyObj;B.MyClassmyObj(11,“13301111155“); C.MyClassmyObj(12,m);D.MyClassmyObj(12)

19、;解析:解析 本题考核构造函数的应用。对象建立用初始化列表对数据成员进行时,列表中的参数类型要与构造函数中形参类型一致。B 选项中第二个参数为“13301111155”是字符串,而构造函数中第二个形参为 char型,两者不一致造成错误。32.下列关于模板的叙述中,错误的是(分数:2.00)A.模板声明中的第一个符号总是关键字 templateB.在模板声明中用和括起来的部分是模板的形参表C.类模板不能有数据成员 D.在一定条件下函数模板的实参可以省略解析:解析 本题考核模板的概念。函数模板的一般说明形式如下:template类型形参表返回类型函数名(形参表)函数体,所以 A、B 选项的描述是正

20、确的。在一定条件函数模板的实参可以省略。所以 C选项的描述是错误的。33.下列对变量的引用中,错误的是(分数:2.00)A.int a; int else return 1+GetLen(str+1);(分数:2.00)填空项 1:_ (正确答案:*str=NULL 或!*str 或*str=0 或*sir=0或 str0=/0或 str0=或 str0 =ULL0)解析:解析 本题考核递归函数的定义。递归函数 GetLen的定义中给出了递归方式,但缺少递归终止的条件,所以横线处应填入的递归终止的条件。显然此函数递归终止的条件是读到了字符串的终止符/0,此时返回的值为 042.下面程序的输出结

21、果是_。#includeiostreamusing namespace std;int x;void funA(intreturn m;(分数:2.00)填空项 1:_ (正确答案:m=ai)解析:解析 本题考核函数模板、if 语句、for 循环。函数模板 max()的功能是返回数组 a中最大元素的值。所以当 ai的值比当前所保存的最大值大时,应该将 ai的值赋值给 m。49.下列程序的输出结果是_。#includeiostreamusing namespace std;class basepublic:int n;base(int x) n=x;virtual void set(int m)

22、 n=m;cout n ;class deriveA:public basepublic:deriveA(int x):base(x) void set(int m) n += m;cout n ;class deriveB:public basepublic:deriveB(int x):base(x) void set(int m) n +m; cout n ;int main()deriveA d1(1);deriveBd2(3);base *pbase;pbase=&d1;pbase-set(1);pbase= &d2;pbase-set(2);return 0;(分数:2.00)填空项 1:_ (正确答案:25)解析:解析 本题考核虚函数的定义和调用。在 C+中,一个基类指针(或引用)可以用来指向它的派生类对象,而且通过这样的指针 (或引用)调用虚函数时,被调用的是该指针(或引用)实际所指向的对象类的那个重定义版本。题中基类成员函数 set()被定义成虚函数,而且其派生类 deriveA和 deriveB都有函数 set()的重定义版本,所以通过指针 pbase的两次调用分别调用的是派生类 deriveA和 deriveB中定义的版本,即输出 25。

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

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

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