欢迎来到麦多课文档分享! | 帮助中心 海量文档,免费浏览,给你所需,享你所想!
麦多课文档分享
全部分类
  • 标准规范>
  • 教学课件>
  • 考试资料>
  • 办公文档>
  • 学术论文>
  • 行业资料>
  • 易语言源码>
  • ImageVerifierCode 换一换
    首页 麦多课文档分享 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

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

    • 资源ID:1324512       资源大小:91KB        全文页数:34页
    • 资源格式: DOC        下载积分:5000积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    二维码
    微信扫一扫登录
    下载资源需要5000积分(如需开发票,请勿充值!)
    邮箱/手机:
    温馨提示:
    如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如需开发票,请勿充值!如填写123,账号就是123,密码也是123。
    支付方式: 支付宝扫码支付    微信扫码支付   
    验证码:   换一换

    加入VIP,交流精品资源
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    1、二级 C+笔试-272 及答案解析(总分:98.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.下列叙述中正确的是(分数:2.00)A.用 E-R 图能够表示实体集之间一对一的联系、一对多的联系、多对多的联系B.用 E-R 图只能表示实体集之间一对一的联系C.用 E-R 图只能表示实体集之间一对多的联系D.用 E-R 图表示的概念数据模型只能转换为关系数据模型2.设有以下定义和程序:#includeiostream.hclass A1public:void show1()cout“class A1“endl;;class A2 : public A1public:v

    2、oid show2()cout“class A2“end1;class A3 : protected A2public:void show3()cout“class A1“endl;void main()A1 obj1;A2 obj2;A3 obj3;则以下不合语法的调用语句是(分数:2.00)A.obj1. showl();B.obj2. showl();C.obj3. showl();D.obj2. show2();3.设 a 和 b 均为 double 型变量,且 a=5.5、b=2.5,则表达式(int)a+b/b 的值是(分数:2.00)A.6.500000B.6C.5.500000

    3、D.6.0000004.下列有关拷贝构造函数的描述中错误的是(分数:2.00)A.拷贝构造函数是一种构造函数B.拷贝构造函数与一般的构造函数一样,可以设置多个形参C.每一个类中都必须有一个拷贝构造函数D.拷贝构造函数的功能是用一个已知对象去初始化一个正在创建的对象。5.有如下程序:#include iostreamusing namespace std;class pointint x, y;public:point( int vx, int vy )x = vx;y = vy;point ( )x = 0;y= 0;point operator+( point p1 )point p;int

    4、 px = x+ p1.x;int py = y + p1.y;return point( px, py );point operator-( point p1 )point p;int px = x -p1.x;int py = y - p1.y;return point ( px, py );void print()coutx“ , “yend1;int main ()point p1(10, 10 ), p2( 20, 20 );p1 = p1 - p2;p1.print ();return 0;执行后的输出结果是(分数:2.00)A.10,10B.20,20C.10,20D.30,30

    5、6.for(int x=0,y=0;!xint main()cout.fill(*);cout.width(5);coushex100end1;return 0;(分数:2.00)A.*100B.*64C.100*D.64*8.在最坏情况下,下列排序方法中时间复杂度最小的是(分数:2.00)A.冒泡排序B.快速排序C.插入排序D.堆排序9.有以下程序#include iostreamusing namespace std:class Baseprivate:char c;public:Base(char n) :c(n) Base ( )coutc; class Derived : publi

    6、c Baseprivate:char c;public:Derived(char n):Base(n+1),c(n) Derived()coutc;int main()Derived obj(x);return 0;执行后的输出结果是(分数:2.00)A.xyB.yxC.xD.y10.不能作为函数重载的判断依据的是(分数:2.00)A.constB.返回类型C.参数个数D.参数类型11.下列关于 this 指针的叙述中,正确的是(分数:2.00)A.this 指针是一个隐含指针,它隐含于类的成员函数中B.只有在使用 this 时,系统才会将对象的地址赋值给 thisC.类的友元函数也有 thi

    7、s 指针D.this 指针表示了成员函数当前操作的数据所属的对象12.带有虚基类的多层次派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样对虚基类的子对象初始化(分数:2.00)A.与虚基类下面的派生类个数有关B.多次C.二次D.一次13.有如下数组声明:int value 30;,下标值引用错误的是(分数:2.00)A.value30B.value0C.value10D.value2014.在进行了任何 C+流的操作后,都可以用 C+流的有关成员函数检测流的状态,其中只能用于检测刚进行的操作是否失败函数名是(分数:2.00)A.failB.eofC.badD.good15.关于在

    8、调用模板函数时实参的使用,下列表述中正确的是(分数:2.00)A.对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略B.对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,则都可以省略C.对于虚拟类型参数所对应的模板实参,若能够省略则必须省略D.对于常规参数所对应的模板实参,任何情况下都不能省略16.如果算符函数调用格式的表达式:x.operator-(operator+(y,0)中的“”是作为成员函数重载的,“+”是作为友元函数重载的,那么该表达式还可以表示为:()(分数:2.00)A.x-y+B.x-(+y)C.(x+)-yD.+x-

    9、y17.在结构化方法中,软件功能分解属于下列软件开发中的阶段是(分数:2.00)A.概要设计B.需求分析C.详细设计D.编程调试18.若有以下程序:# include iostreamusing namespace std;class Basepublic:Base ( )x=0;int x;class Derived1 : virtual public Basepublic:Derived1 ( )x=10;class Derived2 : virtual public Basepublic:Derived2 ()x=20;class Derived : public Derived1,pr

    10、otected Derived2;int main()Derived obj;coutobj.xend1;return 0;该程序运行后的输出结果是(分数:2.00)A.10B.20C.30D.019.关系表中的每一横行称为一个(分数:2.00)A.元组B.字段C.属性D.码20.设有语句:char str1=“string“,str28,*str3,*str4=“string“;,则下列对库函数 strcpy 调用不正确的是(分数:2.00)A.strcpy(str1,“Hello1“);B.strcpy(str2, “Hello2“);C.strcpy(str3, “Hell03“);D.

    11、strcpy(str4, “Hell04“);21.设有以下语句,对 a 数组元素的引用中(其中 0=i10)不正确的是int a10=0,1,2,3,4,5,6,7,8,9,*p=a;(分数:2.00)A.ap-aB.*(p=s;q=s+ strlen(s)-1;while (pq)temp=*p;*p=*q;*p=temp;p+;q-;(分数:2.00)A.将一个字符串首尾颠倒B.计算字符串的长度C.统计字符串中的空格个数D.将字符串中的小写字母变成大写字母23.数据结构分为逻辑结构和存储结构,下列数据结构中不属于存储结构的是(分数:2.00)A.线性链表B.二叉链表C.栈与队列D.循环队

    12、列24.算法的时间复杂度是指(分数:2.00)A.执行算法程序所需要的时间B.算法程序的长度C.算法程序中的指令条数D.算法执行过程中所需要的基本运算次数25.面向对象程序设计将数据和( )放在一起,作为一个相互依存、不可分割的整体来处理。(分数:2.00)A.对数据的操作B.信息C.数据隐藏D.数据抽象26.下列叙述中正确的是(分数:2.00)A.程序设计过程中的主要工作是编制程序B.程序设计的主要目标是编制出运行结果正确的程序C.不良的程序设计风格会增加程序的复杂性D.上述三种说法都不对27.下列关于类中成员函数特征的描述中错误的是(分数:2.00)A.类的成员函数一定是内联函数B.类的成

    13、员函数可以重载C.成员函数可以设置参数的默认值D.成员函数可以是静态的28.有如下类的定义。空格处的语句是class MyClass_ int x, y;public:MyClass(int a=0, int b=0)x=a;y=b;static void change()x-=10;y-=10;(分数:2.00)A.staticB.constC.privateD.不需要填入内容29.在模块化程序设计中,按功能划分模块的原则是(分数:2.00)A.各模块的功能尽量单一,且各模块之间的联系尽量的少B.各模块的功能尽量单一,且各模块之间的联系尽量紧密C.各模块应包括尽量多的功能D.各模块应包括尽量

    14、多的输入输出操作30.设栈 S 的初始状态为空。元素 a,b,c,d,e,f 依次通过栈 S,若出栈的顺序为 b,d, c,f,e,a,则栈 S 的容量至少应该为(分数:2.00)A.3B.4C.5D.631.有以下程序:#include iostream#include mathusing namespace std;class pointprivate:double x;double y;public:point(double a, double b x=a;y=b;friend double distance (point a, point b ;double distance(poin

    15、t a, point b return sqrt(a. x-b. x )*(a. x -b. x )+ (a. x -b. x)*(a. x-b. x);int main ()point p1(1,2);point p2(5,2);coutdistance (p1, p2)end1;return 0;程序运行后的输出结果是(分数:2.00)A.1B.5C.4D.632.有如下程序#include iostreamusing namespace std;class basepublic:virtual void f1()cout“F1Base “;virtual void f2()cout“F2

    16、Base “;class derive: public basevoid f1()cout“F1Derive “;void f2( int x )cout“F2Derive “;int main()base obj1, * p;derive obj2;p = p - f1();p - f2();return 0;执行后的输出结果是(分数:2.00)A.F1Derive F2BaseB.F1Derive F2DeriveC.F1Base F2BaseD.F1Base F2Derive33.下列叙述中正确的是(分数:2.00)A.软件就是程序清单B.软件就是存放在计算机中的文件C.软件应包括程序清

    17、单以及运行结果D.软件包括程序、数据和文档34.有以下程序#include iostreamusing namespace std;int a;int fun ();int main ()extern int a;int b;a = 100;b = fun();coutbend1;return 0;int fun)extern int a;return (10*a ;其程序运行后的输出结果是(分数:2.00)A.100B.10C.1000D.1000035.有如下程序:#include iostreamusing namespace std;class Baseprivate:char c;p

    18、ublic:Base(char n) :c(n)Base()coutc;class Derived: public Baseprivate:char c; public:Derived(char n):Base(n+1),c(n) Derived()coutc;int main ()Derived obj (x);return 0;执行上面的程序净输出(分数:2.00)A.xyB.yxC.xD.y二、填空题(总题数:14,分数:28.00)36.在长度为 n 的线性表中查找一个表中不存在的元素,需要的比较次数为 【1】 。(分数:2.00)填空项 1:_37.在面向对象的程序设计中,用来请求对

    19、象执行某一处理或回答某些信息的要求称为 【2】 。(分数:2.00)填空项 1:_38.源程序文档化要求程序应加注释。注释一般分为序言性注释和 【3】 。(分数:2.00)填空项 1:_39.数据模型分为格式化模型与非格式化模型,层次模型与网状模型属于 【4】 。(分数:2.00)填空项 1:_40.在关系运算中, 【5】 运算是在给定关系的某些域上进行的运算。(分数:2.00)填空项 1:_41.若 a=12,b=14,c=0,则表达式“(y=(aB) ?a:B) C) ?y:c”的值为 【6】 。(分数:2.00)填空项 1:_42.下面程序的输出结果为 【7】 。#include ios

    20、treamusing namespace std;void initialize(int printNo,int state=0);void initialize(int printNo=1,int state);int main()initialize();return 0;void initialize(int printNo, int state)coutprintNo“,“stateend1;(分数:2.00)填空项 1:_43.下列程序的输出结果是 【8】 #includeiostreamusing namespace std;int int main ()int a =10;get

    21、Var(coutaend1;return 0;(分数:2.00)填空项 1:_44.若有以下程序:#include iostreamusing namespace std;class Basepublic:void who()cout“ Base“end1:;class Derived1: public Basepublic:void who() cout“Derived“end1;int main()Base *p;Derived1 obj1;p=p-who();return 0;则该程序运行后的输出结果是 【9】 。(分数:2.00)填空项 1:_45.多态性分为两类:编译时的多态性和 【

    22、10】 的多态性。(分数:2.00)填空项 1:_46.C+中,设置虚基类的目的是 【11】 。(分数:2.00)填空项 1:_47.下面程序的输出结果为:Base: fun,请将程序补充完整。#include iostream.hclass Basepublic:【12】 fun()cout“Base:fun“end1:class Derived : public Basepublic:【13】 fun() cout“Derived:fun“end1; ;int main()Base a,*pb;Derived b;pb = pb-fun();return 0;(分数:2.00)填空项 1:

    23、_48.下列程序的输出结果是 【14】 。#include iostreamusing namespace std;template typename TT total (T *data) T s = 0;while(*data) s+=*data+;return s; int main()int x=2,4,6,8,0,12,14,16,18;couttotal(x)end1;return 0;(分数:2.00)填空项 1:_49.下面程序的输出结果是 【15】 。#include iostream.h#include math.hclass pointdouble x;double y;p

    24、ublic:point(double a, double b) x=a;y=b;friend double distance(point a, point b) ;double distance(point a, point b) return sqrt (a. x-b.x) * (a. x-b.x)+ (a. y-b. y) * (a. y-b. y) );void main()point p1(1,2);point p2(5,2);coutdistance(p1,p2)end1;(分数:2.00)填空项 1:_二级 C+笔试-272 答案解析(总分:98.00,做题时间:90 分钟)一、选

    25、择题(总题数:35,分数:70.00)1.下列叙述中正确的是(分数:2.00)A.用 E-R 图能够表示实体集之间一对一的联系、一对多的联系、多对多的联系 B.用 E-R 图只能表示实体集之间一对一的联系C.用 E-R 图只能表示实体集之间一对多的联系D.用 E-R 图表示的概念数据模型只能转换为关系数据模型解析:解析 用 E-R 图可以简单明了地描述实体及其相互之间的联系,用 E-R 图还可以方便地描述多个实体集之间的联系和一个实体集内部实体之间的联系。所以,选项 A 正确,选项 B 与 C 错误。为了建立用户所要求的数据库,必须把概念结构(用 E-R 图表示的概念数据模型)转换为某个具体的

    26、数据库管理系统所支持的数据模型,这就是逻辑结构设计所要完成的任务。在已给定数据库管理系统的情况下,数据库的逻辑设计可以分两步来进行:将概念模型转换成一般的数据模型;将一般的数据模型转换为特定的数据库管理系统所支持的数据模型。可知,用 E-R 图表示的概念数据模型不仅能转换为关系数据模型,还可以转换为其他数据模型,如网状模型和层次模型等。所以,选项 D 说法错误。2.设有以下定义和程序:#includeiostream.hclass A1public:void show1()cout“class A1“endl;;class A2 : public A1public:void show2()co

    27、ut“class A2“end1;class A3 : protected A2public:void show3()cout“class A1“endl;void main()A1 obj1;A2 obj2;A3 obj3;则以下不合语法的调用语句是(分数:2.00)A.obj1. showl();B.obj2. showl();C.obj3. showl(); D.obj2. show2();解析:解析 本题考核派生类的使用以及访问权限问题。C+中,通过类的对象只能访问类的公有成员,不能访问类的保护成员和私有成员。A2 是 A1 的公有派生类,A3 是 A2 的保护派生类,所以类 A1 的

    28、成员函数 show1()在类 A3 中呈现保护属性,不能通过 A3 类的对象访问。3.设 a 和 b 均为 double 型变量,且 a=5.5、b=2.5,则表达式(int)a+b/b 的值是(分数:2.00)A.6.500000B.6C.5.500000D.6.000000 解析:解析 本题考核运算符的优先级和数据类型转换,此方面的知识点应该着重掌握。在表达式中,优先级最高的是(int)a,结果是 5。其次是 b/b,结果是 1.0,最后相加结果为 6.000000 (表达式的最终结果为 double 型)。4.下列有关拷贝构造函数的描述中错误的是(分数:2.00)A.拷贝构造函数是一种构

    29、造函数B.拷贝构造函数与一般的构造函数一样,可以设置多个形参 C.每一个类中都必须有一个拷贝构造函数D.拷贝构造函数的功能是用一个已知对象去初始化一个正在创建的对象。解析:解析 本题考核拷贝构造函数的概念。拷贝初始化构造函数实际上也是构造函数,它是在初始化时被调用,将一个已知对象的数据成员的值拷贝给正在创建的另一个同类的对象。拷贝构造函数具有的特点是:拷贝构造函数也是一种构造函数,因此函数名与类相同,并且不能指定函数返回类型:只有一个参数,是对同类的某个对象的引用:每一个类中都必须有一个拷贝构造函数。如果类中没有声明拷贝构造函数,编译器会自动生成一个具有上述形式的公有的拷贝构造函数5.有如下程

    30、序:#include iostreamusing namespace std;class pointint x, y;public:point( int vx, int vy )x = vx;y = vy;point ( )x = 0;y= 0;point operator+( point p1 )point p;int px = x+ p1.x;int py = y + p1.y;return point( px, py );point operator-( point p1 )point p;int px = x -p1.x;int py = y - p1.y;return point (

    31、 px, py );void print()coutx“ , “yend1;int main ()point p1(10, 10 ), p2( 20, 20 );p1 = p1 - p2;p1.print ();return 0;执行后的输出结果是(分数:2.00)A.10,10B.20,20C.10,20D.30,30 解析:解析 本题主要考查 C+中运算符重载的机制与实现。运算符重载函数一般分为成员函数形式和友元函数形式,这两种形式都可以访问类中的私有成员。本题中的运算符重载形式为成员函数形式。程序在类 point 中声明了私有数据成员 int x 和 int y,并定义了两种形式的构造函

    32、数以完成对对象的初始化;之后,程序对运算符“+”进行了重载,另其输入参数为类 point 的对象,输出为操作符“+”右侧该对象的私有数据成员 x 和 y 与操作符“+”左侧同类型对象的私有数据成员 x 和 y 的加和:print()函数则输出对象中数据成员的值。程序 main()函数中,实例化了类 point 的两个对,象 p1 和 p2,并完成对对象的初始化在语句“p1= p1+p2;”中,由于操作符“+”左右两端的操作数为 point 类的对象,复合类 point 定义中的操作符“+”的重载函数,因此程序将调用重载后的操作符函数,并返回两 point 对象数据成员的加和值,覆盖对象 p1

    33、的数据成员因此 print()函数输出对象 p1 的数据成员值己应该为:x=10+20=30,y=10+20=306.for(int x=0,y=0;!xint main()cout.fill(*);cout.width(5);coushex100end1;return 0;(分数:2.00)A.*100B.*64 C.100*D.64*解析:解析 本题考核格式控制数据的输入输出。语句“cout. fill(*);”是将填充字符设置成*,在输出数据时,如果数据宽度小于设置的宽度,则空闲位置要用*填满,语句“cout. width(5);”是将数据的输出宽度设置成 5,关键字 hex 的作用是将

    34、整数按十六进制输出,即输出 64,又由于初始状态为右对齐,所以程序最终输出*64。8.在最坏情况下,下列排序方法中时间复杂度最小的是(分数:2.00)A.冒泡排序B.快速排序C.插入排序D.堆排序 解析:解析 在最坏情况下:冒泡排序需要的比较次数为 n(n-1)/2;快速排序需要的比较次数也为 n(n-1)/2;插入排序需要的比较次数也为 n(n-1)2;堆排序需要比较的次数为 O(nlog2n)。可知,在最坏情况下,堆排序的时间复杂度最小,本题的正确答案为 D。9.有以下程序#include iostreamusing namespace std:class Baseprivate:char

    35、 c;public:Base(char n) :c(n) Base ( )coutc; class Derived : public Baseprivate:char c;public:Derived(char n):Base(n+1),c(n) Derived()coutc;int main()Derived obj(x);return 0;执行后的输出结果是(分数:2.00)A.xy B.yxC.xD.y解析:解析 本题考核继承与派生中继承基类的数据成员与成员函数。在 C+中,由于析构函数不能被继承,因此在执行派生类的析构函数时,基类的析构函数也将被调用。执行顺序是先执行派生类的析构函数,

    36、再执行基类的析构函数,其顺序与执行构造函数的顺序正好相反在此题的程序中,在主函数 main结束时,派生类 Derived 对象 obj 将被删除,所以就会调用对象的析构函数。先调用派生类的析构函数,输出 x,然后调用基类的析构函数,输出 y。10.不能作为函数重载的判断依据的是(分数:2.00)A.constB.返回类型 C.参数个数D.参数类型解析:分析 本题考核函数重载。所谓函数重载,是指同一个函数名可以对应多个函数的实现。进行函数重载时,要求同名函数在参数个数上不同,或者参数类型上不同。即重载函数不许具有相同的形参列表。函数的返回类型不能作为函数重载的判断依据。corist 是函数的一部

    37、分参与函数的重载11.下列关于 this 指针的叙述中,正确的是(分数:2.00)A.this 指针是一个隐含指针,它隐含于类的成员函数中B.只有在使用 this 时,系统才会将对象的地址赋值给 thisC.类的友元函数也有 this 指针D.this 指针表示了成员函数当前操作的数据所属的对象 解析:解析 本题考核 this。类的每一个成员函数都有一个隐合定义的常量指针,称为 this 指针。它是成员函数所属对象的指针,它指向类对象的地址。成员函数可以通过这个指针知道自己属于哪一个对象。当对一个对象调用成员函数时,编译程序先将对象的地址赋值给 this 指针,然后调用成员函数,每次成员函数存

    38、取数据时,则隐含使用 this 指针。但是在使用 this 指针时需要注意的是:this 指针只能在类的成员函数中使用,它指向该成员函数被调用的对象。this 指针一般用于返回当前对象自身;静态成员函数没有 this 指针。因为类只有一个静态成员函数实例,所以使用 this 指针没有什么意义。在静态成员函数中使用 this 指针会引起编译错误。12.带有虚基类的多层次派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样对虚基类的子对象初始化(分数:2.00)A.与虚基类下面的派生类个数有关B.多次C.二次D.一次 解析:解析 本题考核虚基类以及构造函数。使用虚基类解决二义性问题的关键

    39、是在派生类中只产生一个虚基类对象。虚基类子对象由最派生类的构造函数通过调用虚基类的构造函数进行初始化(最派生类的构造函数的成员初始化列表中必须列出对虚基类构造函数的调用,否则,表示使用该虚基类的缺省构造函数)。由于最派生类总是相对,因此,从虚基类直接或间接派生的派生类中的构造函数的成员初始化列表中都要列出对虚基类构造函数的调用。但只有用于建立对象的最派生类的构造函数才调用虚基类的构造函数,此时最派生类的所有基类中列出的对虚基类的构造函数的调用在执行过程中都被忽略,从而保证对虚基类子对象只初始化一次。13.有如下数组声明:int value 30;,下标值引用错误的是(分数:2.00)A.val

    40、ue30 B.value0C.value10D.value20解析:解析 本题考核对数组的引用。在 C+语言中,数组的下标是从 0 开始的,最大的下标值比所定义的数组长度的值小 1。同时需要注意的是,C+语言中,编译和执行时并不检查数组下标是否越界。因此 value30在编译阶段是正确的,但是在运行时会出现错误。14.在进行了任何 C+流的操作后,都可以用 C+流的有关成员函数检测流的状态,其中只能用于检测刚进行的操作是否失败函数名是(分数:2.00)A.fail B.eofC.badD.good解析:解析 C+中可以用文件流对象的下列成员函数来判别文件流的当前状态。函数 is_ open()

    41、判定流对象是否与一个打开的文件相联系,若是,返回 true,否则返回 false;函数 good()刚进行的操作成功时返回 true,否则返回 false;函数 fail()与 good()相反,刚进行的操作失败时返回 true,否则返回false;函数 bad()如果进行了非法操作返回 true,否则返回 false;函数 eof()进行输入操作时,若到达文件尾返回 true,否则返回 false。其中,eof 函数只能用于输入流操作。15.关于在调用模板函数时实参的使用,下列表述中正确的是(分数:2.00)A.对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可

    42、以省略B.对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,则都可以省略C.对于虚拟类型参数所对应的模板实参,若能够省略则必须省略D.对于常规参数所对应的模板实参,任何情况下都不能省略 解析:解析 模板函数的实参可以省略,但模板实参的省略并不是必然的,而是有条件的。在调用一个模板函数时,编译系统需要足够的信息来判别每个虚拟类型参数所对应的实际类型,可以从两个不同的渠道获得这样的信息:从模板实参表(用和括起来的参数表)或从模板函数实参表(用()括起来的参数表),模板实参的信息优先于函数实参的信息。如果从后者获得的信息已经能够判定其中部分或全部虚拟类型参数所对应的实际参数,而

    43、且它们又正好是参数表中最后的若干个参数,则模板实参表中的那几个参数可以省略。如果模板实参表中的实参都被省略了,则连空表也可以不要。反之,对于某个模板实参,如果从模板函数的实参表中无法获得同样的信息,就不能省略;或者虽然能够获得同样的信息,但在它后面还有其他不能省略的实参,则其自身还是不能省略由此可知只有 D) 选项的说法是正确的。16.如果算符函数调用格式的表达式:x.operator-(operator+(y,0)中的“”是作为成员函数重载的,“+”是作为友元函数重载的,那么该表达式还可以表示为:()(分数:2.00)A.x-y+ B.x-(+y)C.(x+)-yD.+x-y解析:解析 本题

    44、考核运算符的重载。假定已经作为某个类的成员函数重载了二元运算符+,且 c1、c2都是该类的对象,则 c1. operator+(c2)与 c1+c2 含义相同。如果+作为该类的非成员函数重载,则operator+(c1,c2)与 c1+c2 含义相同。同时一元运算符“+”重载函数调用中采用了虚拟参数,说明+为后缀的,所以其等价的表达式为“x-y+”。17.在结构化方法中,软件功能分解属于下列软件开发中的阶段是(分数:2.00)A.概要设计 B.需求分析C.详细设计D.编程调试解析:解析 概要设计的任务是划分出构成系统的各物理元素以及设计出软件的结构(如确定模块及模块间的关系)。设计过程通常分为

    45、以下几步:提出可选择方案;选择合理方案;推荐最佳方案;功能分解;设计软件结构;制定测试计划;最后提交概要设计文档。软件功能分解属于概要设计阶段。本题的正确答案为 A。18.若有以下程序:# include iostreamusing namespace std;class Basepublic:Base ( )x=0;int x;class Derived1 : virtual public Basepublic:Derived1 ( )x=10;class Derived2 : virtual public Basepublic:Derived2 ()x=20;class Derived :

    46、 public Derived1,protected Derived2;int main()Derived obj;coutobj.xend1;return 0;该程序运行后的输出结果是(分数:2.00)A.10B.20 C.30D.0解析:解析 本题考核虚基类。本题中,虽然 Derived1 和 Derived2 都是由共同的基类 x 派生而来的,但由于引入了虚基类,使得它们分别对应基类的不同副本。这时数据成员 x 只存在一份拷贝,不论在类Derived1 修改,还是在类 Derived2 中修改,都是直接对这惟一拷贝进行操作。本题程序执行语句“Derived obj”时,就会先调用虚基类

    47、Base 的构造函数,使得 x=0,然后执行类 Derived1 的构造函数使得 x=10,再执行类 Derived2 的构造函数,使得 x=20。最后输出 x 的值为 20。19.关系表中的每一横行称为一个(分数:2.00)A.元组 B.字段C.属性D.码解析:解析 在关系模型中,把数据看成一个二维表,每一个二维表称为一个关系。关系表中的每一横行称为一个元组。本题的正确答案是 A。20.设有语句:char str1=“string“,str28,*str3,*str4=“string“;,则下列对库函数 strcpy 调用不正确的是(分数:2.00)A.strcpy(str1,“Hello1“);B.strcpy(str2, “Hello2“);C.strcpy(str3, “Hell03“); D.strcpy(str4, “Hell04“);解析:解析 本题考核函数调用。函数 strcpy 的函数原型为:char* strcpy(char* strDest, const char* strSrC) ;,其功能是复制 strSrc 所有字符到 strDest,并返回 strDest。根据函数 strcpy 的原型可知选项 A) ,B) 和 D) 的调用都是正确的。在 C) 选项中,由于指针*str3 没有初始化其字符长度,容易引起访问越界


    注意事项

    本文(【计算机类职业资格】二级C++笔试-272及答案解析.doc)为本站会员(medalangle361)主动上传,麦多课文档分享仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文档分享(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

    收起
    展开