ImageVerifierCode 换一换
格式:DOC , 页数:16 ,大小:68.50KB ,
资源ID:1324069      下载积分:5000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-1324069.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

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

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

1、二级 C+-241 及答案解析(总分:58.00,做题时间:90 分钟)一、选择题(总题数:36,分数:58.00)1.关于在调用模板函数时模板实参的使用,下列表述中正确的是_。(分数:1.00)A.对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略B.对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,则都可以省略C.对于虚拟类型参数所对应的模板实参,若能够省略则必须省略D.对于常规参数所对应的模板实参,任何情况下都不能省略2.有下列程序: #includeiostream Using namespace std; Class Amou

2、nt int amount; public; Amount(int n=O):amount(n) Int getAmount()constreturn amount; Amount return ; int main() Amount x(3),y(7); x+=y; coutx.getAmount()endl; return 0; 己知程序的运行结果是 10,则横线处缺失的表达式是 _ 。(分数:2.00)A.*thisB.thisC. 下列表达式中错误的是(分数:2.00)A.a2=“WIN“B.strcpy(a2,“WIN“)C.a23=“W“D.a01=a014.有函数模板声明和一些变

3、量定义如下: templateclass T1, class T2, class T3T1 sum(T2, T3); double d1, d2; 则下列调用中,错误的是_。(分数:2.50)A.sumdouble, double, double(d1, d2);B.sumdouble, double(d1, d2);C.sumdouble(d1, d2);D.sum(d1, d2);5.下列选项中不全是 C+语言关键字的是(分数:2.00)A.const,break,defaultB.long,void,usingC.virtual,exterm,includeD.try,throw,thi

4、s6.有以下程序: class Date public: Date(int y,int m,int d); year=y; month=m; day=d; Date(int y=2000) year=y; month=10; day=1; Date(Dated) year=d.year; month=d.month; day=d.day; void print() coutyear“.“month“,“dayendl; private: int year,month,day;); Date fun(Date d) Date temp; temp=d; return temp; int main

5、() Date date1(2000,1,1),date2(0,0,0); Date date3(date1); date2=fun(date3); return 0; 程序执行时,Date 类的复制构造函数被调用的次数是_。(分数:1.00)A.2B.3C.4D.57.下列关于栈的叙述正确的是_。(分数:1.00)A.栈按“先进先出”组织数据B.栈按“先进后出”组织数据C.只能在栈底插入数据D.不能删除数据8.当使用 ifstream 流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为_。(分数:1.00)A.ios_base:inB.ios_base:in|ios_base:ou

6、tC.ios_base:outD.ios_base:in void try(int,int,int,int); int main() int x,y,z,r; x=1; y=2; try(x,y,z,r); coutrendl; return 0; void try(int x,int y,int z,int r) z=x+y; x=x*x; y=y*y; r=z+x+y; (分数:2.00)A.18B.9C.10D.不确定10.不能作为函数重载的判断依据的是 _ 。(分数:2.00)A.constB.返回类型C.参数个数D.参数类型11.在 C+中,cin 是一个_。(分数:2.50)A类B

7、.对象C.模板D.函数12.有如下程序: #includeiostream using namespace std; class Book public: Book(char*t=“ “)strcpy(title,t); _ pnvate: char title40; ; class Novel:public Book public: Novel(char*t=“ “):Book(t) char*Category()constretum“文学“; ; int main() Book*pb; pb=new Novel(); coutpb-Category(); delete pb; retum

8、0; 若程序运行时输出结果是“文学“,则横线处缺失的语句是_。(分数:1.00)A.char*Category();B.char*Category()const;C.virtual char*Category()const;D.virtual char*Category()const=0;13.下列关于赋值运算符“=”重载的叙述中,正确的是_。(分数:2.00)A.赋值运算符只能作为类的成员函数重载B.默认的赋值运算符实现了“深层复制”功能C.重载的赋值运算符函数有两个本类对象作为形参D.如果已经定义了复制(拷贝)构造函数,就不能重载赋值运算符14.有如下函数模板: template type

9、name T,typename U T cast(U u) return u; 其功能是将 U 类型数据转换为 T 类型数据。已知 i 为 int 型变量,下列对模板函数 cast 的调用中正确的是_。(分数:1.00)A.cast(i);B.cast(i);C.cast char*,int(i);D.castdouble,int(i);15.若已定义: int a 0,1,2,3,4,5,6,7,8,9, * pa, i ; 其中 0i9,则对 a 数组元素不正确的引用是(分数:2.00)A.apaB.* (B.char*str=“abcde“;C.char str5=“abcde“;D.c

10、har*str5=“abcde“;24.下列情况中,不会调用拷贝构造函数的是_。(分数:2.50)A.用一个对象去初始化同一类的另一个新对象时B.将类的一个对象赋值给该类的另一个对象时C.函数的形参是类的对象,调用函数进行形参和实参结合时D.函数的返回值是类的对象,函数执行返回调用时25.派生类的成员函数不能访问基类的(分数:2.00)A.公有成员和保护成员B.公有成员C.私有成员D.保护成员26.下面关于 break 语句的描述中,不正确的是(分数:1.00)A.break 可以用于循环体内B.break 语句可以在 for 循环语句中出现多次C.break 语句可以在 switch 语句中

11、出现多次D.break 语句可用于 if 条件判断语句内27.下列关于栈的叙述正确的是_。(分数:1.00)A.栈顶元素最先被删除B.栈顶元素最后才能被删除C.栈底元素永远不能被删除D.以上三种说法都不对28.要定义整型数组 x,使之包括初值为 O 的三个元素,下列语句中错误的是_。(分数:2.50)A.int x3=0, 0, 0;B.int x=0;C.static int x3=0;D.int x=0, 0, 0;29.为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为 _ 。(分数:2.00)A.publicB.protectedC.privateD.

12、static30.有如下程序: #includeiostream #includestring using namespace std; class MyBag public: MyBag(string br, string cr):brand(br), color(cr)+count; static int GetCount()return count; private: string brand, color; static int count; ; int MyBag:count=0; int main() MyBag one(“CityLife“, “Gray“); coutone.G

13、etCount(); MyBag*ptr=new MyBag(“Coach“, “Black“); coutMyBag:GetCount(); return 0; 运行时的输出结果是_。(分数:1.00)A.12B.21C.22D.1131.有如下函数模板定义: templateclass T T func(T x,T y)return x*x+y*y; 在下列对 func 的调用中,错误的是_。(分数:2.00)A.func(3,5);B.func(3.0,5.5);C.func(3,5.5);D.funcint(3,5.5);32.关于 this 指针的说明不正确的是(分数:1.00)A.

14、不能在程序中修改 this 指针B.this 指针可以给其他指针赋值,但不能修改 this 指针C.静态成员函数中没有 this 指针D.this 指针可以被赋值33.当使用 fstream 流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为 _ 。(分数:1.00)A.ios:inB.ios: outC.ios:in lios:outD.以上都不对34.有如下类定义: class XX int xdata; public: XX(int n=0):xdata(n) ; class YY:public xx int ydata; public: YY(int m=0,int n=0)

15、:XX(m),ydata(n) ; YY 类的对象包含的数据成员的个数是_。(分数:2.50)A.1B.2C.3D.435.下列关于 C+预定义流对象的叙述中,正确的足_。(分数:1.00)A.cin 是 C+预定义的标准输入流对象B.cin 是 C+预定义的标准输入流类C.cout 是 C+预定义的标准输入流对象D.cout 是 C+预定义的标准输入流类36.关于抽象类下面说法正确的是(分数:1.00)A.抽象类就是其中有函数定义但没有实现的类B.抽象类是可以被实例化的C.派生类不能成为抽象类D.抽象类的子类必须实现父类中的纯虚函数二级 C+-241 答案解析(总分:58.00,做题时间:9

16、0 分钟)一、选择题(总题数:36,分数:58.00)1.关于在调用模板函数时模板实参的使用,下列表述中正确的是_。(分数:1.00)A.对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略B.对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,则都可以省略C.对于虚拟类型参数所对应的模板实参,若能够省略则必须省略D.对于常规参数所对应的模板实参,任何情况下都不能省略 解析:解析 在调用一个模板函数时,编译系统需要足够的信息来判别每个虚拟类型参数所对应的实际类型,可以从两个不同的渠道获得这样的信息:从模板实参表(用“”括起来的参数表)或从模

17、板函数实参表(用“()”括起来的参数表)。如果从后者获得的信息已经能够判定其中部分或全部虚拟类型参数所对应的实际参数,而且它们又正好是参数表中最后的若干参数,则模板实参表中的那几个参数可以省略。如果模板实参表中的实参都被省略了,则空表“”也可以不要,因此选项 D 错误。反之,对于某个模板实参,如果从模板函数的实参表中无法获得同样的信息,就不能省略;或者虽然能够获得同样的信息,但在它后面还有其他不能省略的实参,则其自身还是不能省略。2.有下列程序: #includeiostream Using namespace std; Class Amount int amount; public; Amo

18、unt(int n=O):amount(n) Int getAmount()constreturn amount; Amount return ; int main() Amount x(3),y(7); x+=y; coutx.getAmount()endl; return 0; 己知程序的运行结果是 10,则横线处缺失的表达式是 _ 。(分数:2.00)A.*thisB.thisC. 下列表达式中错误的是(分数:2.00)A.a2=“WIN“ B.strcpy(a2,“WIN“)C.a23=“W“D.a01=a01解析:解析 本题考查数组的基本知识,B、C、D 在 C 语言中都是允许的,A

19、 选项的赋值是非法的。4.有函数模板声明和一些变量定义如下: templateclass T1, class T2, class T3T1 sum(T2, T3); double d1, d2; 则下列调用中,错误的是_。(分数:2.50)A.sumdouble, double, double(d1, d2);B.sumdouble, double(d1, d2);C.sumdouble(d1, d2);D.sum(d1, d2); 解析:解析 该考题考查的内容是函数模板调用时的实参表的省略,考生必须注意可否省略。下面我们介绍一下模板实参的省略。模板函数的调用格式为: 模板函数名模板实参表(函

20、数实参表); 在调用一个模板函数时,编译系统需要足够的信息来判断每个虚拟类型参数所对应的实际类型,我们可以从模板实参表和函数实参表中获得,其中模板实参表由于函数实参表,如果从后者获得的信息已经能够判定其中部分或全部虚拟类型参数所对应的实际参数,而且它们又正好是参数表中最后的若干参数,则模板实参表中的那几个参数可以省略。但当模板函数需要获得特定类型的返回值时,不能省略模板实参。故 D是错误的。5.下列选项中不全是 C+语言关键字的是(分数:2.00)A.const,break,defaultB.long,void,usingC.virtual,exterm,include D.try,throw

21、,this解析:6.有以下程序: class Date public: Date(int y,int m,int d); year=y; month=m; day=d; Date(int y=2000) year=y; month=10; day=1; Date(Dated) year=d.year; month=d.month; day=d.day; void print() coutyear“.“month“,“dayendl; private: int year,month,day;); Date fun(Date d) Date temp; temp=d; return temp; i

22、nt main() Date date1(2000,1,1),date2(0,0,0); Date date3(date1); date2=fun(date3); return 0; 程序执行时,Date 类的复制构造函数被调用的次数是_。(分数:1.00)A.2B.3 C.4D.5解析:解析 本题复制构造函数一共被调用了三次:第一次是在执行语句 Date date3(date1);时,用已经建立的对象 date1 对正在建立的对象 date3 进行初始化;第二次是在调用 fun 函数时,由于是传值调用,因此实参对象 date3 要对形参对象 d 进行初始化;第三次是在执行 fun 函数中的返

23、回语句 return temp;时,系统初始化一个匿名对象时使用了复制构造函数。7.下列关于栈的叙述正确的是_。(分数:1.00)A.栈按“先进先出”组织数据B.栈按“先进后出”组织数据 C.只能在栈底插入数据D.不能删除数据解析:解析 栈是按“先进后出”的原则组织数据的,数据的插入和删除都在栈顶进行操作。8.当使用 ifstream 流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为_。(分数:1.00)A.ios_base:in B.ios_base:in|ios_base:outC.ios_base:outD.ios_base:in void try(int,int,int,i

24、nt); int main() int x,y,z,r; x=1; y=2; try(x,y,z,r); coutrendl; return 0; void try(int x,int y,int z,int r) z=x+y; x=x*x; y=y*y; r=z+x+y; (分数:2.00)A.18B.9C.10D.不确定 解析:10.不能作为函数重载的判断依据的是 _ 。(分数:2.00)A.constB.返回类型 C.参数个数D.参数类型解析:解析 所谓函数重载是指同一函数名可以对应多个函数实现。进行函数重载时,要求同名函数在参数个数上不同,或者参数类型上不同。但函数的返回类型不能作为判

25、断重载的依据。11.在 C+中,cin 是一个_。(分数:2.50)A类B.对象 C.模板D.函数解析:解析 C+提供了一套输入、输出流类的对象,它们是 cin、cout 和 cerr,对应 C 语言中的 3 个文件指针 stdin、stdout、stderr,分别指向终端输入、终端输出和标准出错输出(也从终端输出)。cin与一起完成输入操作,cout、cerr 与一起完成输出与标准错误输出。12.有如下程序: #includeiostream using namespace std; class Book public: Book(char*t=“ “)strcpy(title,t); _

26、pnvate: char title40; ; class Novel:public Book public: Novel(char*t=“ “):Book(t) char*Category()constretum“文学“; ; int main() Book*pb; pb=new Novel(); coutpb-Category(); delete pb; retum 0; 若程序运行时输出结果是“文学“,则横线处缺失的语句是_。(分数:1.00)A.char*Category();B.char*Category()const;C.virtual char*Category()const;D

27、.virtual char*Category()const=0; 解析:解析 本题考查纯虚函数和抽象类,纯虚函数是在声明虚函数时被“初始化”为 0 的函数,包含纯虚函数的类为抽象类,抽象类是不能被实例化的,但是可以定义指向抽象类数据的指针变量,当派生类成为具体类后,就可以用这种指针指向派生类的对象,然后通过该指针调用虚函数,实现多态性的操作。所以本题答案为 D。13.下列关于赋值运算符“=”重载的叙述中,正确的是_。(分数:2.00)A.赋值运算符只能作为类的成员函数重载 B.默认的赋值运算符实现了“深层复制”功能C.重载的赋值运算符函数有两个本类对象作为形参D.如果已经定义了复制(拷贝)构造

28、函数,就不能重载赋值运算符解析:解析 赋值运算符“=”只能作为成员函数重载。14.有如下函数模板: template typename T,typename U T cast(U u) return u; 其功能是将 U 类型数据转换为 T 类型数据。已知 i 为 int 型变量,下列对模板函数 cast 的调用中正确的是_。(分数:1.00)A.cast(i);B.cast(i);C.cast char*,int(i);D.castdouble,int(i); 解析:解析 本题考查函数模板的基本运用,属于基础知识。函数模板实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的

29、类型代表,这个通用函数就是函数模板。函数模板可以设定默认参数,这样在调用模板函数时就可以省略实参,函数模板的实例就是一个函数的定义。所以本题答案为 D。15.若已定义: int a 0,1,2,3,4,5,6,7,8,9, * pa, i ; 其中 0i9,则对 a 数组元素不正确的引用是(分数:2.00)A.apaB.* (B.char*str=“abcde“; C.char str5=“abcde“;D.char*str5=“abcde“;解析:解析 本题考查字符串的定义,A 选项中,定义了一个字符,而用字符串赋值,所以错误,C 选项定义了字符数组,一个字符所占空间是 1 位,再加上隐含的

30、“0”,一共是 6 位,所以字符数组的大小应该为 6,D 选项定义了一个字符串指针数组,是指一个数组里面装着指针,赋值错误。所以答案为 B。24.下列情况中,不会调用拷贝构造函数的是_。(分数:2.50)A.用一个对象去初始化同一类的另一个新对象时B.将类的一个对象赋值给该类的另一个对象时 C.函数的形参是类的对象,调用函数进行形参和实参结合时D.函数的返回值是类的对象,函数执行返回调用时解析:解析 此题考查的是复制构造函数的概念。用一个已知的对象初始化一个正在创建的同类对象时,就会发生复制构造函数。因此,选项 A、C、D 均会调用复制构造函数,而只有选项 B 没有创建的动作,不调用复制构造函

31、数。25.派生类的成员函数不能访问基类的(分数:2.00)A.公有成员和保护成员B.公有成员C.私有成员 D.保护成员解析:解析 本题考查的知识点是:派生类对基类成员的访问。派生类对基类中各成员的访问能力与继承方式无关,其成员不能访问基类中的私有成员,可以访问基类中的公有成员和保护成员。26.下面关于 break 语句的描述中,不正确的是(分数:1.00)A.break 可以用于循环体内B.break 语句可以在 for 循环语句中出现多次C.break 语句可以在 switch 语句中出现多次D.break 语句可用于 if 条件判断语句内 解析:解析:本题考查的是 break 语句的使用,

32、break 可以结束 switch 语句和 for27.下列关于栈的叙述正确的是_。(分数:1.00)A.栈顶元素最先被删除 B.栈顶元素最后才能被删除C.栈底元素永远不能被删除D.以上三种说法都不对解析:解析 栈是限定在一端进行插入删除的先入后出的线性表数据结构,栈顶元素最后被插入到栈中但是最先被删除;而栈底元素最先被插入,最后被删除。28.要定义整型数组 x,使之包括初值为 O 的三个元素,下列语句中错误的是_。(分数:2.50)A.int x3=0, 0, 0;B.int x=0; C.static int x3=0;D.int x=0, 0, 0;解析:解析 如果不指定数组的长度而直接

33、赋值,则赋值的元素个数就是数组的长度。B 的数组元素个数为 1;静态变量一般在声明处初始化,如果没有显式初始化,会被程序自动初始化为 0,所以 C 是正确的。29.为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为 _ 。(分数:2.00)A.public B.protectedC.privateD.static解析:解析 因为 public 类型的权限控制属性允许类对象对类属性和方法进行访问。30.有如下程序: #includeiostream #includestring using namespace std; class MyBag public: M

34、yBag(string br, string cr):brand(br), color(cr)+count; static int GetCount()return count; private: string brand, color; static int count; ; int MyBag:count=0; int main() MyBag one(“CityLife“, “Gray“); coutone.GetCount(); MyBag*ptr=new MyBag(“Coach“, “Black“); coutMyBag:GetCount(); return 0; 运行时的输出结果

35、是_。(分数:1.00)A.12 B.21C.22D.11解析:解析 静态成员变量 count 在构造函数中完成前缀自增 1 的运算,所以语句 MyBag one(“CityLife”,“Gray”)在调用构造函数时,完成+count,此时调用 one.GetCount()输出 count的值为 1;同理 new MyBag 语句也会调用构造函数,完成+count,此时 count 的值为 2,通过类名 MyBag调用 GetCount()时,输出 count 的值为 2,最终输出结果为 12,答案为 A 选项。31.有如下函数模板定义: templateclass T T func(T x,

36、T y)return x*x+y*y; 在下列对 func 的调用中,错误的是_。(分数:2.00)A.func(3,5);B.func(3.0,5.5);C.func(3,5.5); D.funcint(3,5.5);解析:解析 此题考查的是函数模板的使用。引用模板函数和引用一般函数在语法形式上基本相同。需要注意的是说明一个函数模板后,当编译系统发现有一个对应的函数调用时,将根据实参中的类型来确认是否匹配函数模板中的对应形参。本题 C 选项中,编译系统从第一个参数“3”获得信息“int”和从第二个参数获得信息“double”两者矛盾,错误;A、B 选项正确;D 选项中,函数名后的int是模板

37、实参表,编译系统会将 double 型的形参“5.5”自动转化成 int 类型。32.关于 this 指针的说明不正确的是(分数:1.00)A.不能在程序中修改 this 指针B.this 指针可以给其他指针赋值,但不能修改 this 指针C.静态成员函数中没有 this 指针D.this 指针可以被赋值 解析:解析 C+的 this 指针是系统默认产生的一个指针,它是 const 的,所以是不能够被改变,不能够被赋值的。33.当使用 fstream 流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为 _ 。(分数:1.00)A.ios:inB.ios: outC.ios:in li

38、os:outD.以上都不对 解析:34.有如下类定义: class XX int xdata; public: XX(int n=0):xdata(n) ; class YY:public xx int ydata; public: YY(int m=0,int n=0):XX(m),ydata(n) ; YY 类的对象包含的数据成员的个数是_。(分数:2.50)A.1B.2 C.3D.4解析:解析 派生类中的成员包括从基类继承过来的成员和自己增加的成员两大部分。其中,从基类继承的私有成员是不能直接访问的。题中,派生类 YY 除了增加的成员 ydata,还包含从基类继承的 xdata。故答案选

39、 B。35.下列关于 C+预定义流对象的叙述中,正确的足_。(分数:1.00)A.cin 是 C+预定义的标准输入流对象 B.cin 是 C+预定义的标准输入流类C.cout 是 C+预定义的标准输入流对象D.cout 是 C+预定义的标准输入流类解析:解析 cin 是 C+预定义的标准输入流对象,cout 是 C+预定义的标准输出流对象。36.关于抽象类下面说法正确的是(分数:1.00)A.抽象类就是其中有函数定义但没有实现的类B.抽象类是可以被实例化的C.派生类不能成为抽象类D.抽象类的子类必须实现父类中的纯虚函数 解析:解析:C+语言中的抽象类就是类中至少有一个纯虚函数的类,抽象类不能被实例化,继承抽象类的类必须实现抽象类中的纯虚函数。

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