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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

【计算机类职业资格】计算机等级考试二级(C++)39及答案解析.doc

1、计算机等级考试二级(C+)39 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(每小题 2 分,共 70 分) 下列各(总题数:35,分数:70.00)1.以下不合法的用户标识符是_。 (分数:2.00)A.j2_KEYB.DoubleC.4dD._8_2.下列数据结构中,能用二分法进行查找的是_。 (分数:2.00)A.顺序存储的有序线性表B.线性链表C.二叉链表D.有序线性链表3.下面程序应能对两个整型变量的值进行交换。以下正确的说法是( )。 #includeiostreamh void swap(int p,int q) int t; t=p; p=q; q=t; v

2、oid main( ) int a=10,b=20; couta“ “b; swap(B.+i;C.a=a+1=5D.! (+a! =b-)7.sizeof(float)是( )。(分数:2.00)A.一个双精度型表达式B.一个整型表达式C.一种函数调用D.一个不合法的表达式8.关于模板下列说法不正确的是( )。(分数:2.00)A.用类模板定义一个对象时,不能省略实参B.类模板只能有虚拟类型参数C.类模板本身在编译中不会生成任何代码D.类模板的成员函数都是模板函数9.当把以下四个表达式用作 if 语句的控制表达式时,有一个选项与其他三个选项含义 不同,这个选项是_。 (分数:2.00)A.k

3、%2B.k%2=1C.(k%2)!=0D.!k%2=110.下列有关继承和派生的途述中,正确的是【 】(分数:2.00)A.如果一个派生类私有继承其基类,则该派生类对象不能访问基类的保护成员B.派生类的成员函数可以访问基类的所有成员C.基类对象可以赋值给派生类对象D.如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类11.在 C中用来实现运行时多态性的是【 】(分数:2.00)A.重载函数B.析构函数C.构造函数D.虚函数12.通常拷贝构造函数的参数是( )。(分数:2.00)A.某个对象名B.某个对象的成员名C.某个对象的引用名D.某个对象的指针名13.下列程序的运行结果是( )。

4、 #includeiostreamh void fun(int *a,iht *B) int *k; k=a;a=b;b=k; void main( ) inta=3,b=6,*x= fun 函数返回值是_。 (分数:2.00)A.不确定的值B.一个整数C.形参 p 中存放的值D.形参 p 的地址值18.已知下列语句中的 x 和 y 都是 int 型变量,其中错误的语句是【 】(分数:2.00)A.xy:B.xy;C.(xy)D.xy;19.下列描述中错误的是( )。(分数:2.00)A.公有继承的私有成员B.私有继承的公有成员C.私有继承的保护成员D.保护继承的保护成员20.设有以下定义和语

5、句 char str20= “Program“,*p; p=str; 则以下叙述中正确的是_。 (分数:2.00)A.*p 与 str0中的值相等B.str 与 p 的类型完全相同C.str 数组长度和 p 所指向的字符串长度相等D.数组 str 中存放的内容和指针变量 p 中存放的内容相同21.以下程序的输出结果是( )。 #includeiostreamh void main( ) int a=21,b=11; cout- -a+b; (分数:2.00)A.建立自定义对话框时必须执行添加窗体的操作B.自定义对话框实际上是 VB 的窗体C.在窗体上还要使用其他控件才能组成自定义对话框D.自定

6、义对话框不一定要有与之对应的事件过程22.执行下列程序段,结果是( )。 #includeiostreamh void main( ) int x=40; char y=C; int n; n=(x case 1 : n+=k; case 2 : case 3 : n+=k; k-; printf(“%d/n“,n); 程序运行后的输出结果是_。 (分数:2.00)A.0B.4C.6D.732.C流中重载的运算符是一个【 】(分数:2.00)A.用于输出操作的非成员函数B.用于输入操作的非成员函数C.用于输出操作的成员函数D.用于输入操作的成员函数33.下面程序输出的结果是( )。 #incl

7、udeiostreamh void main( ) int i; int a33=1,2,3,4,5,6,7,8,9; for(i=0;i3;i+) coutaii“ “; (分数:2.00)A.15B.16C.510D.61034.能正确表示逻辑关系:“a10 或 a0”的 C+语言表达式是( )。(分数:2.00)A.a =10 or a =0B.a =0 | a =10C.a =10 if(*s) f(s,t); main() char str10=“abcdefg“,*p; p=str+strlen(str)/2+1; f(p,p-2); printf(“%s/n“,str); 程序运

8、行后的输出结果是_。(分数:2.00)A.abcdefgB.gfedcbaC.gbcdefaD.abedcfg二、填空题(每空 2 分,共 30 分)(总题数:15,分数:30.00)36.设置虚基类的目的是 1,通过 2 表示虚基类。(分数:2.00)填空项 1:_37.在 C+语言中每个类都有一个 1 指针,该指针指向正在调用成员函数的对象。(分数:2.00)填空项 1:_38.如果类 B 继承了类 A,则称类 A 为类 B 的基类,类 B 称为类 A 的 1。(分数:2.00)填空项 1:_39.若要在 C 盘根目录下作为二进制文件打开文件 testdat,则应该用的语句是 1。(分数:

9、2.00)填空项 1:_40.若要在 C 盘根目录下作为二进制文件打开文件 testdat,则应该用的语句是 1。(分数:2.00)填空项 1:_41.C+中封装性、继承性和 1 是面向对象思想的主要特征。(分数:2.00)填空项 1:_42.将以下程序写成三目运算表达式是 1。 if(a B) max=a; else max=b; (分数:2.00)填空项 1:_43.将 x+y 中的+运算符用友元函数重载应写为 1。(分数:2.00)填空项 1:_44.语句 int * i;i=new int 10;,释放指针 i 的语句是 1。(分数:2.00)填空项 1:_45.下列程序的执行结果为

10、1。 #includeiostream.h void main2 cout.fill( * ); cout.width(10); cout“hello“endl; (分数:2.00)填空项 1:_46.以下程序的输出结果是 1。 #includeiostreamh void main2 int a=0; a+=(a=8); cout a; (分数:2.00)填空项 1:_47.下列 for 语句的循环次数为 1。 for(int a=0,b=1;b void main( ) int a=10,b=20; couta“ “b; swap( t= * p; * p=*q;*q=t;执行程序时,先将

11、 a 的地址传递给指针变量 p,b 的地址传递给指针变量 q,然后将*p(a 的值)的值传递给t,将*q(b 的值)传递给 * p,将 t 的值传递给 * q,从而将 a 值和 b 值互换。4.下列语句的输出结果( )。 cout strlen(“/t/“/065/xff/n“); (分数:2.00)A.5 B.14C.8D.输出项不合法,无正常输出解析:该字符串中包含的字符是/t(跳格符)、/“ (双引号)、/065 (ASCII 值为八进制 065,也即十进制为 51 的字符)、/xff(ASCII 值为十六进制 ff,也即十进制为 255 的字符)、/n(换行符)。5.关于虚函数下面说的

12、正确的是(分数:2.00)A.若在重定义虚函数时使用了 virtual,则该重定义函数还是虚函数B.虚函数不能声明为友元C.子类必须重定义父类的虚函数D.虚函数不能是 static 的 解析:虚函数一定不能定义为静态的。虚函数可以声明为友元,子类也不是必须重定义父类的虚函数,若在重定义虚函数时使用了 virtual,则该重定义函数不一定还是虚函数。6.在 C+语言程序中,对象之间的相互通信通过( )。(分数:2.00)A.a=1;B.+i; C.a=a+1=5D.! (+a! =b-)解析:赋值表达式的组成是:在赋值运算符的左边是一变量,右边是一表达式。选项 B) =8+b+c=9 中,前半句

13、 a=8+b+c 正确,但的是 a+b+c=9 左边其实是一个表达式,而不是一个变量。选项 C) i=l23*4 中,连用两个双目运算符,双目运算符的用法是左右两端必须都是表达式或变量才行。选项 D) a=a+7=c+b,a+7=c+b 的左边也是个表达式,而非变量。 7.sizeof(float)是( )。(分数:2.00)A.一个双精度型表达式B.一个整型表达式 C.一种函数调用D.一个不合法的表达式解析:该函数用于数据类型和变量。注意:size of 操作符不能用于函数,不完全类型或位字段。不完全类型指具有未知存储大小的数据类型,如未知存储大小的数组类型、void 类型等。8.关于模板下

14、列说法不正确的是( )。(分数:2.00)A.用类模板定义一个对象时,不能省略实参B.类模板只能有虚拟类型参数 C.类模板本身在编译中不会生成任何代码D.类模板的成员函数都是模板函数解析:本题考查模板概念。类模板可以有虚拟类型参数。9.当把以下四个表达式用作 if 语句的控制表达式时,有一个选项与其他三个选项含义 不同,这个选项是_。 (分数:2.00)A.k%2B.k%2=1C.(k%2)!=0D.!k%2=1 解析:本题选项 A、B、C 中表达式用作 if 语句控制表达式时,其值一致,即判断 k 的值是否为奇数,若 为奇数,其表达式为真,否则为假;而选项 D 的表达式“!k%2=1”相当于

15、“!(k%2)=1”,若 k 的值为奇 数,则此表达式的值为假。10.下列有关继承和派生的途述中,正确的是【 】(分数:2.00)A.如果一个派生类私有继承其基类,则该派生类对象不能访问基类的保护成员B.派生类的成员函数可以访问基类的所有成员C.基类对象可以赋值给派生类对象D.如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类 解析:派生类继承私有继承基类,该派生类对象可以访问基类中的公有成员和保护成员,而基类的私有成员在派生类中不可访问。如果派生类没有给出全部纯虚函数的实现,该派生类仍然是一个抽象类。11.在 C中用来实现运行时多态性的是【 】(分数:2.00)A.重载函数B.析构

16、函数C.构造函数D.虚函数 解析:本题考核虚函数。在 C语言中,多态性可分为两类:编译时的多态性和运行时的多态性。编译时的多态性是通过函数重载和模板体现。其实现机制称为静态联编(也译为静态绑定),即在编译阶段决定执行哪个同名的被调用函数:运行时的多态性是通过体现的,其实现机制称为动态联编(也译为动态绑定),即在编译阶段不能决定执行哪个同名的被调用函数,只在执行阶段才能依据要处理的对象类型来决定执行哪个类的成员函数。用来实现运行时多态性的是虚函数。12.通常拷贝构造函数的参数是( )。(分数:2.00)A.某个对象名B.某个对象的成员名C.某个对象的引用名 D.某个对象的指针名解析:拷贝初始化构

17、造函数的作用是用一个已知的对象来初始化一个被 创建的同类的对象,该函数只有一个参数,并且是对同类的某个对象的引用。13.下列程序的运行结果是( )。 #includeiostreamh void fun(int *a,iht *B) int *k; k=a;a=b;b=k; void main( ) inta=3,b=6,*x= fun 函数返回值是_。 (分数:2.00)A.不确定的值B.一个整数 C.形参 p 中存放的值D.形参 p 的地址值解析:函数值的类型应当是在定义函数时指定的。在定义函数时对函数值说明的类型一般和 return 语句中 的表达式类型一致,即函数类型决定返回值的类型。

18、此题中定义函数类型为 int 型,故函数返回值也为整型。18.已知下列语句中的 x 和 y 都是 int 型变量,其中错误的语句是【 】(分数:2.00)A.xy:B.xy;C.(xy) D.xy;解析:本题考核 C表达式类型及求值规则。自加运算符是单目运算符,运算对象必须为变量,不能是常量和表达式,C 选项中的对象是表达式,故错误。19.下列描述中错误的是( )。(分数:2.00)A.公有继承的私有成员B.私有继承的公有成员C.私有继承的保护成员D.保护继承的保护成员 解析:逻辑运算符“”表示或的意思。20.设有以下定义和语句 char str20= “Program“,*p; p=str;

19、 则以下叙述中正确的是_。 (分数:2.00)A.*p 与 str0中的值相等 B.str 与 p 的类型完全相同C.str 数组长度和 p 所指向的字符串长度相等D.数组 str 中存放的内容和指针变量 p 中存放的内容相同解析:选项 A 正确,原因是语句 p=str 表示指针变量 p 指向数组 str20的首地址也就是 str0。所以*p 与 str0中的值相等。21.以下程序的输出结果是( )。 #includeiostreamh void main( ) int a=21,b=11; cout- -a+b; (分数:2.00)A.建立自定义对话框时必须执行添加窗体的操作B.自定义对话框

20、实际上是 VB 的窗体C.在窗体上还要使用其他控件才能组成自定义对话框D.自定义对话框不一定要有与之对应的事件过程 解析:所有的字节输出流都继承于 OutputStream 类。22.执行下列程序段,结果是( )。 #includeiostreamh void main( ) int x=40; char y=C; int n; n=(x case 1 : n+=k; case 2 : case 3 : n+=k; k-; printf(“%d/n“,n); 程序运行后的输出结果是_。 (分数:2.00)A.0B.4C.6D.7 解析:在 switch 语句中,表达式的值与某一个 case 后

21、面的常量表达式的值相等时,就执行此 case 后面的语 句,若所有的 case 中的常量表达式的值都没有与表达式的值匹配的,就执行 default 后面的语句,各个 case 和 default 的出现次序不影响执行结果。所以在本题中,当 k=5 和 k=4 的时候,case 都没有与其匹配的值, 所以执行了 default 语句;当 k=3 时,执行“case 3 : n+=k;”得 n=3,然后执行 default;当 k=2 时,执行“case2 : case 3 : n+=k;”得 n=5,然后执行 default;当 k=1 时,执行“case 1 : n+=k; case 2 :

22、case 3 : n+=k;” 使得 n 加两次 k,得到 n=7。32.C流中重载的运算符是一个【 】(分数:2.00)A.用于输出操作的非成员函数B.用于输入操作的非成员函数 C.用于输出操作的成员函数D.用于输入操作的成员函数解析:本题考核运算符重载。C中重载输入流运算符和输出流运算符只能作为非类成员函数重载,且必须使用如下原形:istream if(*s) f(s,t); main() char str10=“abcdefg“,*p; p=str+strlen(str)/2+1; f(p,p-2); printf(“%s/n“,str); 程序运行后的输出结果是_。(分数:2.00)A

23、.abcdefgB.gfedcba C.gbcdefaD.abedcfg解析:本程序的作是将字符串 str 倒序。语句“p=str+strlen(str)/2+1;”用于将指针变量 p 指向 e 字符所在的存储 单元,p-2 指向了 c 字符所在的存储单元,在函数 f 中将这两个存储单元的内容交换,并使得 f 函数中指向 e 字 符的指针变量 s 加 1。指向 c 字符的指针变量 t 减 1,然后继续将 s 和 t 指向的存储单元的内容进行交换,直到 s 指 向的存储单元的内容为空为止。所以本题程序输出的结果是字符串“abcdefg”的倒序形式“gfedcba”。二、填空题(每空 2 分,共

24、30 分)(总题数:15,分数:30.00)36.设置虚基类的目的是 1,通过 2 表示虚基类。(分数:2.00)填空项 1:_ (正确答案:解决二义性问题)解析:解决二义性的两个基本方法一是用域名进行限制,二是用虚基类的方法。37.在 C+语言中每个类都有一个 1 指针,该指针指向正在调用成员函数的对象。(分数:2.00)填空项 1:_ (正确答案:this)解析:C+语言中 this 指针是类自带的一个指针,它指向正在调用成员函数的对象。38.如果类 B 继承了类 A,则称类 A 为类 B 的基类,类 B 称为类 A 的 1。(分数:2.00)填空项 1:_ (正确答案:派生类)解析:如果

25、类 A 为类 B 的基类,那么类 B 称为类 A 的派生类。 39.若要在 C 盘根目录下作为二进制文件打开文件 testdat,则应该用的语句是 1。(分数:2.00)填空项 1:_ (正确答案:ifstream fin(“C:/testdat“,ios_binary);或ifstream fin;finopen(c:/test daf“ios_binary);)解析:C+中打开文件有两种方式ifstream fin(“testdat“);ifstream fin;finopen(“testdat“);,ios_binary 的意义是以二进制文件打开。40.若要在 C 盘根目录下作为二进制文

26、件打开文件 testdat,则应该用的语句是 1。(分数:2.00)填空项 1:_ (正确答案:ifstream fin(“C:/testdat“,ios_binary);或ifstream fin;finopen(c:/test daf“ios_binary);)解析:C+中打开文件有两种方式ifstream fin(“testdat“);ifstream fin;finopen(“testdat“);,ios_binary 的意义是以二进制文件打开。41.C+中封装性、继承性和 1 是面向对象思想的主要特征。(分数:2.00)填空项 1:_ (正确答案:多态性)解析:面向对象系统包含了三个

27、特征封装性、继承性和多态性,这三个特征可以 很好的实现数据抽象,进行行为共享,完成进化求解和描述一个系统的确定行为。 42.将以下程序写成三目运算表达式是 1。 if(a B) max=a; else max=b; (分数:2.00)填空项 1:_ (正确答案:max=(aB) ?a:b;)解析:条件运算符要求有三个操作对象,称三目(元)运算符,它是 c+语言中惟一的一个三目运算符。条件表达式的一般形式为:表达式 1?表达式 2:表达式 3。所以我们可以写成(aB) ?a:b,它是一个“条件表达式”。执行顺序是如果(aB) 条件为真,则条件表达式取值 a 作为整个表达式的值,否则取值 b作为整

28、个表达式的值。43.将 x+y 中的+运算符用友元函数重载应写为 1。(分数:2.00)填空项 1:_ (正确答案:operator+(x,y))解析:C+中用成员函数重载 x+y 为 xoperator+(y);,用友元函数重载 x+y 为 operator+(x,y)。 44.语句 int * i;i=new int 10;,释放指针 i 的语句是 1。(分数:2.00)填空项 1:_ (正确答案:delete i)解析:申请内存空间时用 new,释放内存空间用 delete。45.下列程序的执行结果为 1。 #includeiostream.h void main2 cout.fill(

29、 * ); cout.width(10); cout“hello“endl; (分数:2.00)填空项 1:_ (正确答案:* * * * * hello)解析:本题考查的是 C+语言的流输出操作,cout 中包括的函数 fill-|_|-和 width-|_|-分 别实现填充和设定显示长度的功能。46.以下程序的输出结果是 1。 #includeiostreamh void main2 int a=0; a+=(a=8); cout a; (分数:2.00)填空项 1:_ (正确答案:16)解析:本题考查 C+赋值表达式的运用。赋值表达式的值就是所赋值变量的值,本题中 a+=8 相当于a=a

30、+8,对表达式逐步进行求解: a+=(a=8)此时,a 的值由于赋值为 8,而不是 0 a+=8 a=a+8 a=16 47.下列 for 语句的循环次数为 1。 for(int a=0,b=1;b&a填空项 1:_ (正确答案:5)解析:因为 b 的值为 1,所以 ba5 相当于 a48.下列程序的输出结果是 1。 #inCludeiostream using namespace std; class Test public: Test2 cnt; Test3cnt; static int Count4 return cnt; private: static int cnt; ; int T

31、est:cnt0; int main5 coutTest:Count6“; Test t1,t2; Test*pT3new Test; Test*pT4new Test; coutTest:Count7; delete pT4; delete pT3; coutTest:Count8endl; return 0; (分数:2.00)填空项 1:_ (正确答案:042)解析:本题考核静态数据成员与静态成员函数的定义与使用方式。C中,提出静态成员的目的是为了解决数据共享的问题。一个给定类的每个对象都有类中定义的所有数据的自己的拷贝,如果在类中将数据成员用 static 说明为静态的,则这个类成员只

32、有一个拷贝并被这个类的所有对象所共享。类 Test 的静态成员 cnt,初始值为 0,所以执行语句“coutTest:Count-|_|-“;“后输出 0。然后程序创建了两个对象 t1 和 t2,以及两个对象指针并调用 new 来初始化指针,所以 cnt 的值变成了4(即此时输出为 4)。然后程序将对象指针 pT4、pT3 delete 了,此时将分别调用析构函数将 cnt 的减 1,所以最后输出 cnt 的值为 2。49. 1 是一系列相关函数的模型或样板,这些函数的 2 形式相同,只是所针对的 3 不同。(分数:2.00)填空项 1:_ (正确答案:函数模板)解析:本题考查 C+中函数模板

33、的定义。函数模板是一系列相关函数的模型或样板,这些函数的源代码形式相同,只是所针对的数据类型不问。注意:声明一个函数的模板格式是:template 模板形参表声明 函数声明 50.数据结构分为逻辑结构和存储结构,循环队列属于 1 结构。(分数:2.00)填空项 1:_ (正确答案:逻辑)解析:所谓数据的逻辑结构,是指反映数据元素之间逻辑关系的数据结构;而数据的逻辑结构在计算机存 储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。在数据的存储结构中,不仅要存放各 数据元素的信息,还需要存放各数据元素之间的前后件关系的信息。而所谓循环队列,就是将队列存储空 间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。所以循环队列不需要存放 元素之间的前后件关系,故它属于逻辑结构。

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