【计算机类职业资格】二级C++笔试-277及答案解析.doc
《【计算机类职业资格】二级C++笔试-277及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】二级C++笔试-277及答案解析.doc(29页珍藏版)》请在麦多课文档分享上搜索。
1、二级 C+笔试-277 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.虚函数支持多态调用,一个基类的指针可以指向派生类的对象,而且通过这样的指针调用虚函数时,被调用的是指针所指的实际对象的虚函数,而非虚函数不支持多态调用。有如下程序: #include iostream using namespaee std; class Base public: virtual void f( )cout“f0+“; void g( )cout“gO+“; ; class Derived:public Base public: void f( )cou
2、t“f+“; void g( )cout“g+“; ; int main( ) Derived d; Base*P=d: p-f( );p-g( ); return 0; 程序的输出结果是(分数:2.00)A.f+g+B.f0+g+C.f+g0+D.f0+g0+2.在下列关系运算中,不改变关系表中的属性个数,但能减少元组个数的是(分数:2.00)A.并B.交C.投影D.笛卡儿乘积3.下列有关继承和派生的叙述中,正确的是(分数:2.00)A.派生类不能访问基类的保护成员B.作为虚基类的类不能被实例化C.派生类应当向基类的构造函数传递参数D.虚函数必须在派生类中重新实现4.下列选项中,不属于面向对
3、象程序设计特征的是(分数:2.00)A.继承性B.多态性C.类比性D.封装性5.若有类声明: class MyClass public: MyClass( )cout1; ; 执行下列语句 MyClass a,b2,*P2; 以后,程序的输出结果是(分数:2.00)A.11B.111C.1111D.111116.在语句 cindata;中,cin 是(分数:2.00)A.C+的关键字B.类名C.对象名D.函数名7.下列对列的叙述中,正确的是(分数:2.00)A.队列属于非线性表B.队列按“先进后出”的原则组织数据C.队列在队尾删除数据D.队列按“先进先出”原则组织数据8.下列运算符中,不能被重
4、载的是(分数:2.00)A. Point C; coutPoint:numberendl; delete ptr; 程序的输出结果是(分数:2.00)A.3B.4C.6D.712.下列函数模板的定义中,合法的是(分数: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;13.有如下函数定义: voi
5、d func(int a,int B) a+;b+; 若执行代码段: intx=0,y=1; func(x,y); 则变量 x 和 y 值分别是(分数:2.00)A.0 和 1B.1 和 1C.0 和 2D.1 和 214.下列函数中对调用它的函数没有起到任何作用的是(分数: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;15.有如下程序: #include iostream using namespace
6、std; class Sample friend long fun(Sample s); public: Sample(long(分数:2.00)A.x=a; private: long x; ; long fun(Sample s) if(sx2)return 1; return sx*fun(Sample(sx-1); int main( ) int sunl=0; for(inti=0;i6;i+)sum+=fun(Sample(i); toutsum: return 0; 程序的输出结果是 A) 120B.16C.154D.3416.要定义数组 A,使得其中每个元素的数据依次为 3、9
7、、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;17.有如下语句序列: int k=0: d0k+=5;cout$;wbile(k19); while(k-0)cout*; 执行上面的语句后,序列输出字符$和*的个数分别是(分数:2.00)A.4 和 20B.5 和 20C.4 和 21D.5 和 2118.如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员。有如下程序,没有使用多态机制:
8、 #include iostream using namespace std; class Base int 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= P
9、oint C; coutPoint:numberendl; delete ptr; 程序的输出结果是(分数:2.00)A.3B.4C.6 D.7解析:解析 只有在创建对象时才会调用类的构造函数,在定义指针时不会调用构造函数,只有给指针new 一个地址时会调用构造函数,所以本程序中一共生成了 6 个 Point 对象(A,B,C,newPoint3)。number 作为静态数据成员,被同一类的不同对象所共享,故结果为 6。12.下列函数模板的定义中,合法的是(分数:2.00)A.template typename TT abs(T x)retllrn x0? -x:X; B.template c
10、lassTT 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;解析:解析 函数模板定义的一般格式为: Templatetypename 类型参数 返回类型 函数名(模板形参表) 函数体13.有如下函数定义: void func(int a,int B) a+;b+; 若执行代码段: intx=0,y=1; func(x,y); 则变量 x 和 y 值分别是(分数:2.00)A.0 和 1B.1 和 1C.0 和 2 D.1 和 2解析:
11、解析 fun( )的第一个参数是传值调用,第二个是传址调用,故在函数中修改形参的值会被传回到实参中,故结果为 0 和 2。14.下列函数中对调用它的函数没有起到任何作用的是(分数: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;解析:解析 C 是传值调用,所以被调函数中形参值改变不会影响到实参,而且没有返回值,所以不会对调用函数产生影响。A 是把引用作为函数参数,D 是把指针作为函数参数,都属于传地址调用,
12、改变形参均会影响参数 x 的值。B 选项有函数返回值。15.有如下程序: #include iostream using namespace std; class Sample friend long fun(Sample s); public: Sample(long(分数:2.00)A.x=a; private: long x; ; long fun(Sample s) if(sx2)return 1; return sx*fun(Sample(sx-1); int main( ) int sunl=0; for(inti=0;i6;i+)sum+=fun(Sample(i); touts
13、um: return 0; 程序的输出结果是 A) 120B.16C.154 D.34解析:解析 通过调用友元函数,实现求解 n!的算法。sum=5!+4!+3!+2!。16.要定义数组 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;解析:解析 采用 int A =3,4,9,8定义数组 A,则 A 中只有 4 个元素,而题干要求的是 7 个元素,A4、A5、A63 个元素就不存在。1
14、7.有如下语句序列: 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,分别打印*。18.如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员。有如下程序,没有使用多态机制: #include iostr
15、eam using namespace std; class Base int 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=&D1; pb-show( );
16、return 0; 程序的输出结果是(分数:2.00)A.10,20 B.30,40C.20,30D.50,50解析:解析 pb 作为基类指针,可以指向派生类对象,但是它只能访问基类的成员函数,而不能访问派生类的成员函数,所以 pb-show( );访问的是基类的 show( )函数,故打印 10,20。19.对如图所示二叉树进行前序遍历的结果为 (分数:2.00)A.DYBEAFCZXB.YDEBFZXCAC.ABDYECFXZ D.ABCDEFXYZ解析:解析 根据对二叉树根的访问先后顺序不同,分别称为前序遍历、中序遍历和后序遍历。这 3 种遍历都是递归定义的,即在其子树中也按照同样的规律
17、进行遍历。下面就是前序遍历方法的递归定义。当二叉树的根不为空时,依次执行如下 3 个操作:访问根结点,按前序遍历左子树,按前序遍历右子树。根据如上前序遍历规则来遍历本题中的二叉树。首先访问根结点,即 A,然后遍历 A 的左子树。遍历左子树同样按照相同的规则首先访问根结点 B,然后遍历 B 的左子树。遍历 B 的左子树,首先访问 D,然后访问 D 的左子树,D 的左子树为空,接下来访问 D 的右子树,即 Y。遍历完 B 的左子树后,再遍历 B 的右子树,即 E。到此遍历完 A 的左子树,接下来遍历 A 的右子树。按照同样的规则,首先访问 C,然后遍历 C 的左子树,即 F。C 的左子树遍历完,接
18、着遍历 C 的右子树。首先访问右子树的根结点 X,然后访问X 的左子树,即 Z,接下来访问 X 的右子树,右子树为空,遍历的结果为 ABDYECFXZ,故本题的正确答案为选项 C。20.针对数组定义 int data10;,下列叙述中错误的是(分数:2.00)A.用*data 可访问到数组的首元素B.用 data9可访问到数组的末元素C.用 data10访问数组元素会超出数组的边界D.data 共有 10 个元素,其首元素是 data1 解析:解析 在 C+中,数组的下标为 0-1,如果定义数组指针,则指针刚开始时是指向数组的头元素。21.某二叉树中有 n 个度为 2 的结点,则该二叉树中的叶
19、子结点数为(分数:2.00)A.n+1 B.n-1C.2nD.n/2解析:解析 本题考查数据结构中二又树的性质。二叉树满足如下一条性质,即:对任意一棵二叉树,若终端结点(即叶子结点)数为 n0,而其度数为 2 的结点数为 n2,则 n0=n2+1。根据这条性质可知,若二叉树中有 n 个度为 2 的结点,则该二叉树中的叶子结点数为 n+1。22.在 C+中,实现封装性需借助于(分数:2.00)A.枚举B.类 C.数组D.函数解析:解析 类的三大特性是:封装、继承、多态。C+中实现信息的封装主要靠类的封装特性来实现。23.下列叙述中正确的是(分数:2.00)A.算法的效率只与问题的规模有关,而与数
20、据的存储结构无关B.算法的时间复杂度是指执行算法所需要的计算工作量 C.数据的逻辑结构与存储结构是一一对应的D.算法的时间复杂度与空间复杂度一定相关解析:解析 本题考查数据结构中有关算法的基本知识和概念。数据的结构会直接影响算法的选择和效率。而数据结构包括两方面,即数据的逻辑结构和数据的存储结构。因此,数据的逻辑结构和存储结构都影响算法的效率。选项 A 的说法是错误的。算法的时间复杂度是对算法在计算机内执行时所需时间的度量;与时间复杂度类似,空间复杂度是对算法在计算机内执行时所需存储空间的度量。24.在 E-R 图中,用来表示实体之间是联系的图形是(分数:2.00)A.矩形B.椭圆形C.菱形
21、D.平行四边形解析:解析 E-R 模型中,有 3 个基本的抽象概念:实体、联系和属性。E-R 图是 E-R 模型的图形表示法,在 E-R 图中,用矩形框表示实体,菱形框表示联系,椭圆形框表示属性。25.有如下程序: #include iostream using namespace std; class test private: int a; public: test( )cout“constructor“endl; test(int(分数:2.00)A.coutaendl; test(const test _test) a=_testa; cout“copy constructor“end
22、l; test()cout“destructor“endl; ; int main( ) test A(3) return 0; 程序的输出结果是 A) 3destructor B.constructordestructorC.copy constructordestructorD.3解析:解析 test 的构造函数重载,test A3调用 test(int A) 函数,然后删除时调用析构函数,故输出选项 A。26.下列叙述中错误的是(分数:2.00)A.在数据库系统中,数据的物理结构必须与逻辑结构一致 B.数据库技术的根本目标是要解决数据的共享问题C.数据库设计是指在已有数据库管理系统的基础
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 二级 笔试 277 答案 解析 DOC
