【计算机类职业资格】二级C++笔试-5及答案解析.doc
《【计算机类职业资格】二级C++笔试-5及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】二级C++笔试-5及答案解析.doc(17页珍藏版)》请在麦多课文档分享上搜索。
1、二级 C+笔试-5 及答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.要定义数组 A,使得其中每个元素的数据依次为 3、9、4、8、0、0、0,错误的定义语句是(分数:2.00)A.int A =3,9,4,8,0,0,0;B.int A7=3,9,4,8,0,0,0;C.int A =3,9,4,8;D.int A7=3,9,4,8;2.有如下程序: #include iostream using namespace std; class test private: int a; public: test( )cout“constru
2、ctor“endl; test(int A) coutaendl; test(const test _test) a=_testa; cout“copy constructor“endl; test()cout“destructor“endl; ; int main( ) test A(3) return 0; 程序的输出结果是(分数:2.00)A.3 destructorB.constructor destructorC.copy constructor destructorD.33.下列叙述中正确的是(分数:2.00)A.算法的效率只与问题的规模有关,而与数据的存储结构无关B.算法的时间复
3、杂度是指执行算法所需要的计算工作量C.数据的逻辑结构与存储结构是一一对应的D.算法的时间复杂度与空间复杂度一定相关4.下列叙述中错误的是(分数:2.00)A.在数据库系统中,数据的物理结构必须与逻辑结构一致B.数据库技术的根本目标是要解决数据的共享问题C.数据库设计是指在已有数据库管理系统的基础上建立数据库D.数据库系统需要操作系统的支持5.有如下程序: #include iostream using namespace std; int main( ) char str100,*P; cout“please input a string:“; cinstr; P=str; for(inti=
4、0;*P!=/0;p+,i+); coutiendl; return 0; 运行这个程序时,若输入字符串为 Abcdefg abcd 则输出结果是(分数:2.00)A.7B.12C.13D.1006.已知 n 是一个 int 型变量,下列语句中错误的是(分数:2.00)A.long*p=new longn;B.long pn;C.long*p=new long(n);D.long p10;7.下列叙述中正确的是(分数:2.00)A.软件测试的主要目的是发现程序中的错误B.软件测试的主要目的是确定程序中错误的位置C.为了提高软件测试的效率,最好由程序编制者自己来完成软件测试的工作D.软件测试是证
5、明软件没有错误8.有如下程序: #include iostream using namespaee std; class Point public: static int number; Point( )number+; Point( )number-; ; int Point:number=0; void main( ) Point*ptr; Point A,B; Point*ptr_point=new Point3; ptr=ptr_point; Point C; coutPoint:numberendl; delete ptr; 程序的输出结果是(分数:2.00)A.3B.4C.6D.7
6、9.在 C+中,实现封装性需借助于(分数:2.00)A.枚举B.类C.数组D.函数10.有如下程序: #includeiostream using namespace std; class A public: static int a; void init( )a=l; A(int a=2)init( );a+; ; int A:a=0; A obj; int main( ) coutobj.a; return 0; 程序的输出结果是(分数:2.00)A.0B.1C.2D.311.下列选项中,不属于面向对象程序设计特征的是(分数:2.00)A.继承性B.多态性C.类比性D.封装性12.下列对列
7、的叙述中,正确的是(分数:2.00)A.队列属于非线性表B.队列按“先进后出”的原则组织数据C.队列在队尾删除数据D.队列按“先进先出”原则组织数据13.下列函数模板的定义中,合法的是(分数:2.00)A.template typename TT abs(T x)retllrn x0? -x:X;B.template classTT abs(T x)return x0? -x;x;C.template Tclass Tabs(T x)return x0? -X;x;D.template T abs(T x)return x0? -x;x;14.对如图所示二叉树进行前序遍历的结果为 (分数:2.
8、00)A.DYBEAFCZXB.YDEBFZXCAC.ABDYECFXZD.ABCDEFXYZ15.有如下语句序列: int k=0: d0k+=5;cout$;wbile(k19); while(k-0)cout*; 执行上面的语句后,序列输出字符$和*的个数分别是(分数:2.00)A.4 和 20B.5 和 20C.4 和 21D.5 和 2116.有如下函数模板声明: templatetypename T T Max(T a,T B) return(a=B) ?a:b; 下列对函数模板 Max 的调用中错误的是(分数:2.00)A.Max(3.5,4.5)B.Max(3.5,4);C.M
9、axdouble(3.5,4.5)D.Maxdouble(3.5,4)17.有如下程序: #include iostream using namespace std; class A public: A(int i)X=i; void dispa( )coutx,; private: int x; ; class B:public A public: B(int i):A(i+10)x=i; void dispb( )dispa( );coutxendl; private: int x; ; int main( )B b(2); b.dispb( ); return 0; 程序的输出结果是(分
10、数:2.00)A.10,2B.12,10C.12,2D.2,218.下列关于虚函数的描述中,正确的是(分数:2.00)A.虚函数是一个 static 类型的成员函数B.虚函数是一个非成员函数C.基类中采用 virtual 说明一个虚函数后,派生类中定义相同类型的函数时可不必加 virtualD.派生类中的虚函数与基类中相同原型的虚函数具有不同的参数个数或类型19.在结构化程序设计中,模块划分的原则是(分数:2.00)A.各模块应包括尽量多的功能B.各模块的规模应尽量大C.各模块之间的联系应尽量紧密D.模块内具有高内聚度,模块间具有低耦合度20.某二叉树中有 n 个度为 2 的结点,则该二叉树中
11、的叶子结点数为(分数:2.00)A.n+1B.n-1C.2nD.n/221.下列函数中对调用它的函数没有起到任何作用的是(分数:2.00)A.void f1(double x)-x;B.double f2(double x)return x-1.5;C.void f3(double x)-x;D.double f4(double *x)-*x;return*x;22.如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员。有如下程序,没有使用多态机制: #include iostream using namespace std; class Base int
12、 a,b; public: Base(int x,inty)a=x;b=y; void show( )couta,bendl; ; class Derived:public Base int C,d; public: Derived(int x,int y,int z,intm):Base(x,y)c=z;d=m; void show( )coutc,dendl; int main( ) Base BI(50,50),*pb; Derived D1(10,20,30,40); pb= Point C; coutPoint:numberendl; delete ptr; 程序的输出结果是(分数:
13、2.00)A.3B.4C.6 D.7解析:解析 只有在创建对象时才会调用类的构造函数,在定义指针时不会调用构造函数,只有给指针new 一个地址时会调用构造函数,所以本程序中一共生成了 6 个 Point 对象(A,B,C,newPoint3)。number 作为静态数据成员,被同一类的不同对象所共享,故结果为 6。9.在 C+中,实现封装性需借助于(分数:2.00)A.枚举B.类 C.数组D.函数解析:解析 类的三大特性是:封装、继承、多态。C+中实现信息的封装主要靠类的封装特性来实现。10.有如下程序: #includeiostream using namespace std; class
14、A public: static int a; void init( )a=l; A(int a=2)init( );a+; ; int A:a=0; A obj; int main( ) coutobj.a; return 0; 程序的输出结果是(分数:2.00)A.0B.1 C.2D.3解析:解析 构造函数 A 中的形参 a 对静态成员 a 形成了屏蔽,故只有在成员函数 init( )中才将静态成员 a 的值修改为 1,而在其他成员函数中没发生变换,故 obj.a=1。11.下列选项中,不属于面向对象程序设计特征的是(分数:2.00)A.继承性B.多态性C.类比性 D.封装性解析:解析 面
15、向对象方法具有封装性、继承性、多态性几大特点。就是这几大特点,为软件开发提供了一种新的方法学。封装性:所谓封装就是将相关的信息、操作与处理融合在一个内含的部件中(对象中)。它是面向对象程序设计的基础。继承性:子类具有派生它的类的全部属性(数据)和方法,而根据某一类建立的对象也具有该类的全部属性(数据)和方法,这就是继承性。继承有利于提高软件开发效率,容易达到一致性。多态性:多态性就是多种形式。不同的对象在接收到相同的消息时,采用不同的动作。12.下列对列的叙述中,正确的是(分数:2.00)A.队列属于非线性表B.队列按“先进后出”的原则组织数据C.队列在队尾删除数据D.队列按“先进先出”原则组
16、织数据 解析:解析 本题考查数据结构中队列的基本知识。队列是一种限定性的线性表,它只允许在表的一端插入元素,而在另一端删除元素,所以队列具有先进先出的特性。在队列中,允许插入元素的一端叫做队尾,允许删除元素的一端则称为队头。13.下列函数模板的定义中,合法的是(分数:2.00)A.template typename TT abs(T x)retllrn x0? -x:X; B.template classTT abs(T x)return x0? -x;x;C.template Tclass Tabs(T x)return x0? -X;x;D.template T abs(T x)retur
17、n x0? -x;x;解析:解析 函数模板定义的一般格式为: Templatetypename 类型参数 返回类型 函数名(模板形参表) 函数体14.对如图所示二叉树进行前序遍历的结果为 (分数:2.00)A.DYBEAFCZXB.YDEBFZXCAC.ABDYECFXZ D.ABCDEFXYZ解析:解析 根据对二叉树根的访问先后顺序不同,分别称为前序遍历、中序遍历和后序遍历。这 3 种遍历都是递归定义的,即在其子树中也按照同样的规律进行遍历。下面就是前序遍历方法的递归定义。当二叉树的根不为空时,依次执行如下 3 个操作:访问根结点,按前序遍历左子树,按前序遍历右子树。根据如上前序遍历规则来遍
18、历本题中的二叉树。首先访问根结点,即 A,然后遍历 A 的左子树。遍历左子树同样按照相同的规则首先访问根结点 B,然后遍历 B 的左子树。遍历 B 的左子树,首先访问 D,然后访问 D 的左子树,D 的左子树为空,接下来访问 D 的右子树,即 Y。遍历完 B 的左子树后,再遍历 B 的右子树,即 E。到此遍历完 A 的左子树,接下来遍历 A 的右子树。按照同样的规则,首先访问 C,然后遍历 C 的左子树,即 F。C 的左子树遍历完,接着遍历 C 的右子树。首先访问右子树的根结点 X,然后访问X 的左子树,即 Z,接下来访问 X 的右子树,右子树为空,遍历的结果为 ABDYECFXZ,故本题的正
19、确答案为选项 C。15.有如下语句序列: int k=0: d0k+=5;cout$;wbile(k19); while(k-0)cout*; 执行上面的语句后,序列输出字符$和*的个数分别是(分数:2.00)A.4 和 20 B.5 和 20C.4 和 21D.5 和 21解析:解析 Dowhile( )先执行循环体然后判断条件,所以在 k=5,10,15,20 时将打印$,而while( )先判断条件,然后执行循环体,所以 k=20 到 1,分别打印*。16.有如下函数模板声明: templatetypename T T Max(T a,T B) return(a=B) ?a:b; 下列对
20、函数模板 Max 的调用中错误的是(分数:2.00)A.Max(3.5,4.5)B.Max(3.5,4); C.Maxdouble(3.5,4.5)D.Maxdouble(3.5,4)解析:解析 在引用函数模板时,如果没在函数名和参数之间加上类型参数,就默认表示参数类型严格按照模板定义的类型匹配;如果在函数名和参数之间加上了类型参数,则对实参自动进行类型转换。17.有如下程序: #include iostream using namespace std; class A public: A(int i)X=i; void dispa( )coutx,; private: int x; ; cl
21、ass B:public A public: B(int i):A(i+10)x=i; void dispb( )dispa( );coutxendl; private: int x; ; int main( )B b(2); b.dispb( ); return 0; 程序的输出结果是(分数:2.00)A.10,2B.12,10C.12,2 D.2,2解析:解析 派生类的构造函数定义的一般格式为: 派生类名(参数总表):基类名(参数表) 派生类新增数据成员的初始化语句 在生成对象 b 时,就自动给基类构造函数传递实参 10+i,所以 dispa( )打印结果为 12,dispb( )打印结果
22、为 2。18.下列关于虚函数的描述中,正确的是(分数:2.00)A.虚函数是一个 static 类型的成员函数B.虚函数是一个非成员函数C.基类中采用 virtual 说明一个虚函数后,派生类中定义相同类型的函数时可不必加 virtual D.派生类中的虚函数与基类中相同原型的虚函数具有不同的参数个数或类型解析:解析 虚函数是在类的声明中使用 virtual 关键字来限定的成员函数,在成员函数实现时不能再使用 virtual 关键字进行限定。派生类中的虚函数必须和基类中的虚函数的形参个数、形参类型、返回值完全一致。虚函数不能用 static 关键字进行修饰。19.在结构化程序设计中,模块划分的
23、原则是(分数:2.00)A.各模块应包括尽量多的功能B.各模块的规模应尽量大C.各模块之间的联系应尽量紧密D.模块内具有高内聚度,模块间具有低耦合度 解析:解析 本题考查软件工程中软件设计的概念和原理。人们在开发计算机软件的长期实践中积累了丰富的经验,总结这些经验得到如下的启发式规则:改进软件结构,提高模块独立性。通过模块的分解或合并,力求降低耦合、提高内聚。低耦合是指降低不同模块间相互依赖的紧密程度,高内聚是指提高一个模块内各元素彼此结合的紧密程度。模块的规模应适中。一个模块的规模不应过大,过大的模块往往是由于分解不够充分;过小的模块开销大于有益操作,而且模块过多将使系统接口复杂,因此过小的
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 二级 笔试 答案 解析 DOC
