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

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

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

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

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

    1、二级 C+笔试-26 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:30,分数:70.00)1.对于 switch(C) 中的变量 c 不能定义为的类型是( )。(分数:2.00)A.unsignedB.intC.charD.float2.下面内容不属于使用软件开发工具好处的是( )。(分数:2.00)A.减少编程工作量B.保证软件开发的质量和进度C.节约软件开发人员的时间和精力D.使软件开发人员将时间和精力花费在程序的编制和调试上3.下列关于纯虚函数的描述中,正确的是( )。(分数:2.00)A.纯虚函数是没有给出实现版本(即无函数体定义)的虚函数B.纯虚函数的声

    2、明总是以“=0;”结束C.派生类必须实现基类的纯虚函数D.含有纯虚函数的类不能是派生类4.有如下程序:class Base1public:int a;void b() return;void c(float) a=float;class Base2public:void b()void c()private:int a;class Derived:public Basel,public Base2public:void b();void main()Derived obj;obj.a=1; /obj.b(); /obj.c(10); /下面各项对语句的描述中,正确的是( )。(分数:2.00)

    3、A.语句都有二义性B.语句有二义性,没有二义性C.语句有二义性,没有二义性D.语句有二义性,没有二义性5.以下特点中不属于线性表的顺序存储结构的是( )。(分数:2.00)A.线性表中所有元素所占的存储空间是连续的B.线性表的数据元素在存储空间中是按逻辑顺序依次存放的C.线性表中所有元素所占的存储空间是连续的D.前后件两个元素在存储空间是紧邻的6.下列关于 swith 语句的描述中,正确的是( )。(分数:2.00)A.switch 语句中 default 字句可以没有,也可有一个B.switch 语句中每个语句序列中必须有 break 语句C.switch 语句中 default 字句只能放

    4、在最后D.switch 语句中 case 子句后面的表达式可以是整型表达式7.一个 C+程序的执行总是从( )。(分数:2.00)A.本程序的第 1 个函数开始,到本程序文件的最后一个函数结束B.本程序的第 1 个函数开始,到本程序的 main()函数结束C.本程序的 main()函数开始,到 main()函数结束D.本程序的 main()函数开始,到本程序的最后一个函数结束8.定义如下一维数组:inta5,*p=a;则下面描述中,错误的是( )。(分数:2.00)A.表达式 p=p+1 是合法的B.表达式 a=a+1 是合法的C.表达式 p-a 是合法的D.表达式 a+2 是合法的9.应在下

    5、列程序画线处填入的正确语句是 ( )。#include iostreamusing namespace std;clas Basepublic:void fun()cout“Base:fun“end1;class Derived : public Basevoid fun()_/显示调用基类的函数 fun()cout“Derived:fun“end1;(分数:2.00)A.fun();B.Base.fun();C.Base:fun();D.Base-fun();10.若有以下程序:#include iostreamusing namespace std;class Aprivate:int a

    6、;public:void seta(int x)a=x;void showa,( )couta“, “;class Bprivate:int b;public:void setb(int x)b=x;void showb ()coutb“, “;class C : public A, private Bprivate:int c;public:void setc(int x,int y, int z)c=z;sera (x);seth (y);void showc()showa();showb();coutcend1;int main ()C c;c.setc(1,2,3);c.showc()

    7、;return 0;程序执行后的输出结果是( )。(分数:2.00)A.1,2,3B.1,1,1C.2,2,2D.3,3,311.有以下程序:#include iostreamusing namespace std;class Basepublic:Base()virtual void f1()cout“f1 of base“end1;Base();class Derive: public Basepublic:void fl(int x)cout“f1 of derive“end1; ;int main ( )Base *p;Derive obj1;p=p-f1 ( );return 0;(

    8、分数:2.00)A.编译时出错B.f1 of deriveC.f1 of baseD.以上答案都不对12.在待排序的元素序列基本有序的前提下,效率最高的排序方法是( )。(分数:2.00)A.插入排序B.选择排序C.快速排序D.堆排序13.下列关于常数据成员的描述中,错误的是( )。(分数:2.00)A.常数据成员必须进行初始化,并且不能更新B.使用 const 说明的数据成员称为常数据成员C.可以在类体外面定义常数据成员D.常数据成员的初始化只能通过构造函数的成员初始化列表进行14.在下面的类定义中,错误的语句是( )。class Samplepublic:Sample(int val);

    9、/Sample(): /private:int a=2.5; /Sample(); /;(分数:2.00)A.B.C.D.15.以下不能正确创建输出文件对象并使其与磁盘文件相关联的语句组的选项是 ( )。(分数:2.00)A.ofstream cfile; cfile.open( “d : ofile.txt“ );B.ofstream * cfile = new ofstream; cfile - open( “d : ofile.txt );C.ofstream cfile( “d: ofile.txt“ );D.ofstream * cfile = new( “d : ofile.txt

    10、“ )16.一个向量第 1 个元素的存储地址是 100,每个元素的长度为 2,则第 5 个元素的地址是( )。(分数:2.00)A.110B.108C.100D.12017.若有以下程序段;#includeiostreamusing namespace std;int main()int a=1,4,5;int *p=int main ( )char b18 = “abcdefg“;char b28,*pb=b1+3;while (-pb=b1)strcpy (b2, Pb) ;coutstrlen (b2) end1;return 0;程序运行后的输出结果是( )。(分数:2.00)A.8B

    11、.3C.1D.719.若有以下程序:#include iostreamusing namespace std;class pointprivate:int x, y;public:point ( )x=0;y=0;void setpoint(int x1,int y1)x=x1;y=y1;void dispoint ()cout“x=“x“ , “y=“yend1;int main ( )point *p=new point;p-setpoint (5, 12);p-dispoint ();return 0;程序运行后的输出结果是( )。(分数:2.00)A.x=12,y=12B.x=5,y=

    12、5C.x=12,y=5D.x=5,y=1220.以下各项排序技术中属于交换类排序法的是( )。(分数:2.00)A.冒泡排序B.希尔排序C.堆排序D.简单选择排序21.下列关于继承的描述中,错误的是( )。(分数:3.00)A.析构函数不能被继承B.派生类是基类的组合C.派生类的成员除了它自己的成员外,还包含了它的基类的成员D.派生类中继承的基类成员的访问权限到派生保持不变22.有以下程序:#include iostreamusing namespace std;class sampleprivate:int n;public:sample()sample (int m)n=m;sample

    13、add(sample s1,sample s2)this-n=s1.n+s2.n;return (*this);void disp()cout“n=“nend1;int main ()sample s1(10) ,s2(5),s3;s3.add(s1,s2);s3.disp();return 0;程序运行后,输出的结果是( )。(分数:3.00)A.n=10B.n=5C.n=20D.n=1523.有以下程序:#includeiostreamusing namespace std;int main ()int a=1,2,3, 4,5, 6, 7,8,9, 10, 11, 12;int *p=a

    14、+5, *q=0;*q=* (p+5);cout*p“ “*qend1;return 0;(分数:3.00)A.运行后报错B.66C.6 12D.5 524.若 x、a、b 和 c 均是 int 型变量,则执行表达式“x=(a=1,b=2)”后的结果是( )。(分数:3.00)A.1B.2C.3D.x 无确定值25.数据流图用于描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名称标识的图符不属于数据流图合法图符的是( )。(分数:3.00)A.控制流B.加工C.贮存文件D.源和潭26.关系数据库的数据及更新操作必须遵循的完整性规则是( )。(分数:3.00)A.实体完整性和参照完

    15、整性B.参照完整性和用户定义的完整性C.实体完整性和用户定义的完整性D.实体完整性、参照完整性和用户定义的完整性27.有如下函数模板的定义:templateclass TT func(T x,T y)return x*x+y*y;在下列对 func()的调用中,不正确的是( )。(分数:3.00)A.func(3,5);B.func(3,5);C.func(3,5.5);D.funcint(3,5.5);28.堆栈 s 进行下列操作:push(1);push(2);pop();pop();后,此时的栈顶元素为( )。(分数:3.00)A.1B.2C.0D.不确定29.在面向对象方法中,一个对象

    16、请求另一对象为其服务的方式是通过发送( )。(分数:3.00)A.调用语句B.命令C.口令D.消息30.程序流程图中的箭头代表的是( )。(分数:3.00)A.数据流B.控制流C.调用关系D.组成关系二、填空题(总题数:14,分数:30.00)31.算法的复杂度包括时间复杂度和 【1】 。(分数:2.00)填空项 1:_32.若按层次顺序将一棵有 n 个节点的完全二叉树的所有节点从 1 到 n 编号,那么当 i 为偶数且小于 n 时,节点 i 的右兄弟是节点 【2】 ,否则节点 i 没有右兄弟。(分数:2.00)填空项 1:_33.面向对象程序设计支持的 3 大特性为:封装性、继承性和 【3】

    17、 。(分数:2.00)填空项 1:_34.关系代数运算是以集合运算为基础的运算,它的基本操作是 【4】 、并、差。(分数:2.00)填空项 1:_35.软件测试是为了 【5】 而执行程序的过程。(分数:2.00)填空项 1:_36.以下程序的输出结果是 【6】 。#include iostreamusing namespace std;int main()int s,i;for(s=0,i=1;i3;i+)s+=i;coutsend1;return 0;(分数:2.00)填空项 1:_37.有如下程序:#include iostreamusing namespace std;int strle

    18、(char a,char b)int num=O,n=O;while (* (a+num) !=/0)num+;while (b n )* (a+num)=b n;num+;n+;return(num);int main ()char strl80,str280,*p1=str1,*p2=str2;cinp1;cinp2;coutstrle(p1,p2)end1;return 0;运行上述程序,如果从键盘输入字符串 qwerty 和字符串 abcd,则程序的输出结果是 【7】 。(分数:2.00)填空项 1:_38.下面程序的输出结果是 【8】 。#include iostreamusing

    19、namespace std;int x;void funA(intvoid funB(int,intint main ( )int first;int second=5;x=6;funA(first,second) ;funB(first,second) ;coutfirst“ “second“ “xend1;return 0;void funA(int first=a+b;a=2*b;b=first+4;void funB(int u, int second=x;v=second+4;x=u+v;(分数:2.00)填空项 1:_39.在类中定义和实现的函数可以称为 【9】 。(分数:2.00

    20、)填空项 1:_40.在 C+中,打开一个文件,就是将这个文件与一个 【10】 建立关联,关闭一个文件,就是取消这种关联。(分数:2.00)填空项 1:_41.下面是“二维向量”vector2D 的定义,其中作为成员函数重载的运算符“+”的功能是将两向量的分量 x 和 y 对应相加,然后返回作为相加结果的新对象。请填空补充完整。class vector2Ddouble x; x 分量double y; y 分量public:vector2D(double x0=0,double y0=0) :x(x0),y(y0)void show(cout (,y) ;vector2D operator +

    21、 (vector2D) ;【11】 operator + (vector2D a) return vector2D( 【12】 );(分数:4.00)填空项 1:_42.若有以下程序:#include iostreamusing namespace std;class sampleint x;public:sample()void setx(int i)x=i;friend iht fun(sample B,int n)int m=0;forint i=0;in;i+)if(Bi.xm)m=Bi.x;return.m;int main ( )sample A10;int arr=90,87,4

    22、2,78,97,84,60,55,78,65;for(int i=O;i10;i+)Ai.setx(arri);coutfun(A, 10)end1;return 0;该程序运行后的输出结果是 【13】 。(分数:2.00)填空项 1:_43.有以下程序:#include iostream.hclass Aint a;public:A( int i )a = i;void display()couta;class Bint b;public:B (int j )b = j;void display()coutb;class C : public B, public Aint c;public:

    23、C(int k) : A( k-2), B(k + 2)c= k;void display()A : display();B : display();coutc;int main ( )C obj ( 10 );obj.display();return 0;执行后的输出结果为 【14】 。(分数:2.00)填空项 1:_44.下面程序的预设功能是:将文本文件 readme 中的内容读出,显示在屏幕上。#include fstreamusing namespace std;int main ()char buf 80 ;ifstream file( “readme“);while (_)file

    24、.getline( buf, 80 );coutbufend1;me. close();则程序中空白处应填入的语句为 【15】 。(分数:2.00)填空项 1:_二级 C+笔试-26 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:30,分数:70.00)1.对于 switch(C) 中的变量 c 不能定义为的类型是( )。(分数:2.00)A.unsignedB.intC.charD.float 解析:解析 选择语句 switch(c)中的 c 必须属于整型、字符型或枚举型。所以答案为 D。2.下面内容不属于使用软件开发工具好处的是( )。(分数:2.00)A.减少编

    25、程工作量B.保证软件开发的质量和进度C.节约软件开发人员的时间和精力D.使软件开发人员将时间和精力花费在程序的编制和调试上 解析:解析 软件开发工具的好处在于减少编程工作量、保证了软件开发的质量和进度、节约软件开发人员花在程序编制和调试上的时间和精力,可以花更多的时间考虑软件的需求和设计。3.下列关于纯虚函数的描述中,正确的是( )。(分数:2.00)A.纯虚函数是没有给出实现版本(即无函数体定义)的虚函数B.纯虚函数的声明总是以“=0;”结束 C.派生类必须实现基类的纯虚函数D.含有纯虚函数的类不能是派生类解析:解析 基类的虚函数有时候不可能被调用到,这时可定义该虚函数为纯虚函数。纯虚函数没

    26、有函数体,但一定要进行说明,它告诉编译器,派生类必须定义该成员函数。纯虚函数是一种特殊的虚函数,纯虚函数是在虚函数的后面加上“=0”,表示该虚函数无函数体,并非赋值运算。纯虚函数的一般格式为:virtual类型函数名(参数表)=0;。在很多情况下,在基类中不能对虚函数给出有意义的实现,而把它说明为纯虚函数,4.有如下程序:class Base1public:int a;void b() return;void c(float) a=float;class Base2public:void b()void c()private:int a;class Derived:public Basel,p

    27、ublic Base2public:void b();void main()Derived obj;obj.a=1; /obj.b(); /obj.c(10); /下面各项对语句的描述中,正确的是( )。(分数:2.00)A.语句都有二义性B.语句有二义性,没有二义性 C.语句有二义性,没有二义性D.语句有二义性,没有二义性解析:解析 C+中二义性问题的检查在访问控制权限或类型检查之前进行,即访问权限的不同或类型不同不能解决二义性问题。所以语句有二义性。由于 Derived 中又重新定义了同名成员函数 b(),所以b()函数的调用就不存在二义性问题。5.以下特点中不属于线性表的顺序存储结构的是

    28、( )。(分数:2.00)A.线性表中所有元素所占的存储空间是连续的B.线性表的数据元素在存储空间中是按逻辑顺序依次存放的C.线性表中所有元素所占的存储空间是连续的 D.前后件两个元素在存储空间是紧邻的解析:解析 线性表的顺序存储结构要求:线性表中所有元素所占的存储空间是连续的并且线性表的数据元素在存储空间中是按逻辑顷序依次存放的。因此,选项 A、B 是正确的。在线性表的顺序存储结构中,前后件两个元素在存储空间中是紧邻的,因此,选项 D 也是正确的。6.下列关于 swith 语句的描述中,正确的是( )。(分数:2.00)A.switch 语句中 default 字句可以没有,也可有一个 B.

    29、switch 语句中每个语句序列中必须有 break 语句C.switch 语句中 default 字句只能放在最后D.switch 语句中 case 子句后面的表达式可以是整型表达式解析:解析 使用 switch 语句应该注意的问题:它的实现留给该基类的派生类去做。但是,可以在将一个函数声明为纯虚函数的同时,为该函数提供实现版本。换句话说,一个函数是否为纯虚函数,取决于其原形的尾部是否有“=0;”,与函数体的有无无关。拥有实现版本的纯虚函数仍然有赖于派生类提供的重定义版本。另外,纯虚函数不能声明为内联函数。7.一个 C+程序的执行总是从( )。(分数:2.00)A.本程序的第 1 个函数开始

    30、,到本程序文件的最后一个函数结束B.本程序的第 1 个函数开始,到本程序的 main()函数结束C.本程序的 main()函数开始,到 main()函数结束 D.本程序的 main()函数开始,到本程序的最后一个函数结束解析:解析 本题考核的知识点是主函数 main()的位置和作用。一个完整的 C+程序有且仅有一个主函数 main()。程序总是从主函数的第 1 条语句开始执行,到主函数的最后一条语句结束。其他函数都是在执行主函数时,通过函数调用或嵌套调用而得以执行的。C+规定,主函数可以出现在程序的任何地方。8.定义如下一维数组:inta5,*p=a;则下面描述中,错误的是( )。(分数:2.

    31、00)A.表达式 p=p+1 是合法的B.表达式 a=a+1 是合法的 C.表达式 p-a 是合法的D.表达式 a+2 是合法的解析:解析 本题考核指针与数组的关系。对于选项 A,由于在定义时指针 p 指向数组 a0,那么表达式“p=p+1”就是让指针 p 指向数组中的元素a1,所以是合法的。对于选项 C,数组名 a 代表该数组的首地址,指针 p 中存的也是地址,所以它们之间可以进行加减运算。对于选项 D,数组名 a 代表该数组的首地址,那么表达式“a+2”代表的是数组元素 a2的地址。对于选项 B,由于数组名代表该数组的首地址,并且只能引用该地址而不能进行修改,所以是不合法的。9.应在下列程

    32、序画线处填入的正确语句是 ( )。#include iostreamusing namespace std;clas Basepublic:void fun()cout“Base:fun“end1;class Derived : public Basevoid fun()_/显示调用基类的函数 fun()cout“Derived:fun“end1;(分数:2.00)A.fun();B.Base.fun();C.Base:fun(); D.Base-fun();解析:解析 作用域分辨符号是“:”,它可以用来限定要访问的成员所在的类的名称。在派生类Derive 的定义中显式调用基类的函数 fun(

    33、),则只能借助于作用域分辨符“:”。10.若有以下程序:#include iostreamusing namespace std;class Aprivate:int a;public:void seta(int x)a=x;void showa,( )couta“, “;class Bprivate:int b;public:void setb(int x)b=x;void showb ()coutb“, “;class C : public A, private Bprivate:int c;public:void setc(int x,int y, int z)c=z;sera (x);

    34、seth (y);void showc()showa();showb();coutcend1;int main ()C c;c.setc(1,2,3);c.showc();return 0;程序执行后的输出结果是( )。(分数:2.00)A.1,2,3 B.1,1,1C.2,2,2D.3,3,3解析:解析 本题考核派生类的应用。本题中类 A 和类 B 都是基类。而类 C 从类 A 公有派生,从类 B 处私有派生。所以类 C 中的函数成员可以访问类 A 和类 B 中的公有成员。在类 C 的函数成员 setc()中,调用基类 A 的函数成员 seta()对 A 的数据成员 a 赋值,还调用了基类

    35、B 的函数成员 setb()对类 B 的数据成员 b 赋值,然后对类 C 自己的数据成员 c 赋值。在类 C 的函数成员 showc()中,调用基类 A 的函数成员 showa()显示数据成员 a 的值,还调用基类 B 的函数成员 showb()显示数据成员 b 的值,然后输出类 C 自己的数据成员 c 的值。在主函数中,先定义派生类的对象 c,然后调用 setc()对 c 中的数据成员赋值,然后输出赋值结果。所以程序最后输出应该为:1,2,3。11.有以下程序:#include iostreamusing namespace std;class Basepublic:Base()virtua

    36、l void f1()cout“f1 of base“end1;Base();class Derive: public Basepublic:void fl(int x)cout“f1 of derive“end1; ;int main ( )Base *p;Derive obj1;p=p-f1 ( );return 0;(分数:2.00)A.编译时出错B.f1 of derive C.f1 of baseD.以上答案都不对解析:解析 本程序中,将基类的成员函数 n()定义为虚函数,而函数 f1()在派生类中被重新定义,重定义的函数仍然是一个虚函数。在 C+中,一个基类指针(或引用)可以指向它

    37、的派生类对象,而且通过这样的指针或引用调用虚函数时,被调用的是该指针(或引用)实际所指向的对象类的那个重定义版本。12.在待排序的元素序列基本有序的前提下,效率最高的排序方法是( )。(分数:2.00)A.插入排序 B.选择排序C.快速排序D.堆排序解析:解析 插入排序通过数据元素的交换来逐步消除线性表中的逆序,所以关键词比较的次数与记录的初始排列次序有关,在待排序的元素序列基本有序的前提下,效率最高。而选择排序和堆排序的关键词比较的次数与记录的初始排列次序无关。快速排序虽然与记录的初始排列次序有关,但在待排序的元素序列基本有序的前提下,效率低于插入排序。13.下列关于常数据成员的描述中,错误

    38、的是( )。(分数:2.00)A.常数据成员必须进行初始化,并且不能更新B.使用 const 说明的数据成员称为常数据成员C.可以在类体外面定义常数据成员 D.常数据成员的初始化只能通过构造函数的成员初始化列表进行解析:解析 常数据成员的定义与一般常量的定义方式相同,只是它的定义必须出现在类体中。常数据成员同样也必须进行初始化,并且不能被更新,但常数据成员的初始化只能通过构造函数的成员初始化列表进行。14.在下面的类定义中,错误的语句是( )。class Samplepublic:Sample(int val); /Sample(): /private:int a=2.5; /Sample()

    39、; /;(分数:2.00)A.B.C. D.解析:解析 不能在类定义中给数据成员赋初值。15.以下不能正确创建输出文件对象并使其与磁盘文件相关联的语句组的选项是 ( )。(分数:2.00)A.ofstream cfile; cfile.open( “d : ofile.txt“ );B.ofstream * cfile = new ofstream; cfile - open( “d : ofile.txt );C.ofstream cfile( “d: ofile.txt“ );D.ofstream * cfile = new( “d : ofile.txt“ ) 解析:解析 本题主要考察

    40、C+中流的概念和文件的 I/O 操作。C+把数据的流动抽象为流,而文件流不是标准设备,因此没有 cout 那样预先定义的全局对象。文件流定义的操作应用于外部设备,最典型的设备是磁盘中的文件。要定义一个文件流类对象,必须先对文件进行打开操作。常用的文件打开操作方式有3 种:默认构造函数+open 成员函数(对象型);默认构造函数+open 成员函数(指针型):构造函数+指定文件名和模式。题目选项中,选项 A 采用方式创建文件对象,选项 B 采用方式创建文件对象,选项 C 采用方式创建文件对象,上述 3 个选项语句都正确的建立起输出文件对象与磁盘文件的关联。选项 D 语句中,直接利用new 操作符

    41、打开文件,而跳过了流对象的 open 操作,语句不合法。16.一个向量第 1 个元素的存储地址是 100,每个元素的长度为 2,则第 5 个元素的地址是( )。(分数:2.00)A.110B.108 C.100D.120解析:解析 数据元素的存储位置均取决于第 1 个数据元素的存储位置,即:LOC(ai) = LOC(a1)+(i-1)C基地址 一个数据元素所占字节数所以第 5 个元素的地址=100+2*(5-1)=108。17.若有以下程序段;#includeiostreamusing namespace std;int main()int a=1,4,5;int *p=int main (

    42、 )char b18 = “abcdefg“;char b28,*pb=b1+3;while (-pb=b1)strcpy (b2, Pb) ;coutstrlen (b2) end1;return 0;程序运行后的输出结果是( )。(分数:2.00)A.8B.3C.1D.7 解析:解析 本题考查常用字符串函数的熟悉程度。先来了解程序中的两个字符串函数:函数 strcpy()的函数原型为:char*strcpy(char*strDest,const char*strSrC) ;,其功能是复制strSrc 所有字符到 strDest,并返回 strDest。函数 strlen()的函数原型为:s

    43、ize t strlen(const char *string);,其函数功能为:返回 string的长度,不包括结束字符/0。再看程序:程序首先定义了一个字符数组 b1 和一个指针 pb,并让指针 pb 指向数组中的 b13。由于在while 语句中,每次循环都是把指针 pb 所指向的字符串复制到数组 b2 中,所以可以不考虑循环的中间过程,直接分析最后一次循环。循环体中的最后一次循环条件是 pb=b1,即指针 pb 指向了数组元素 b10,此时把指针 pb 所指向的字符串复制到数组 b2 中,就相当于把数组 b1 中的字符串复制到数组 b2 中。所以最后数组 b2 中保存的就是数组 b1

    44、中的字符串,其长度为 7(不包括字符串结束符号/0)。19.若有以下程序:#include iostreamusing namespace std;class pointprivate:int x, y;public:point ( )x=0;y=0;void setpoint(int x1,int y1)x=x1;y=y1;void dispoint ()cout“x=“x“ , “y=“yend1;int main ( )point *p=new point;p-setpoint (5, 12);p-dispoint ();return 0;程序运行后的输出结果是( )。(分数:2.00)

    45、A.x=12,y=12B.x=5,y=5C.x=12,y=5D.x=5,y=12 解析:解析 本题考核对象指针的定义与使用。分析程序:程序首先定义一个类 point,类 point 中有两个私有成员,整型变量 x 和 y,还有两个公有成员函数setpoint(int x1,int y1)和 dispoint()。函数 setpoint()用来设置私有成员 x 和 y 的值,而函数dispoint()用来显示私有成员 x 和 y 的值。主函数中,首先定义了类 point 的指针对象 p,并申请了内存空间,然后调用对象 p 中公有成员 setpoint给对象 p 中的私有成员 x 和 y 赋值,然

    46、后调用成员函数 dispoint 显示 x 和 y 的值。由此可知,最后输出的值应该是 5,12。20.以下各项排序技术中属于交换类排序法的是( )。(分数:2.00)A.冒泡排序 B.希尔排序C.堆排序D.简单选择排序解析:解析 所谓交换类排序法是指借助元素之间的相互交换进行排序的一种方法。它包括冒泡排序法和快速排序法。21.下列关于继承的描述中,错误的是( )。(分数:3.00)A.析构函数不能被继承B.派生类是基类的组合C.派生类的成员除了它自己的成员外,还包含了它的基类的成员D.派生类中继承的基类成员的访问权限到派生保持不变 解析:解析 在 C+的继承中,基类的构造函数和析构函数不能被

    47、继承。所以选项 A 是正确的。派生类中包含了基类中的成员,它是对基类定义的扩充和延续,是对基类定义的进一步具体化,也可以说派生类是基类的组合。所以选项 B 是正确的。派生类继承了基类的全部数据成员和除了构造函数、析构函数之外的全部函数成员。所以选项 C 是正确的。派生类继承了基类的全部数据成员和除了构造函数、析构函数之外的全部函数成员,但是,继承方式控制了基类中具有不同访问属性的成员在派生类中的访问属性。派生类不能访问基类的私有成员,而对基类的公有成员和保护成员的访问权限则随着派生类对基类的继承方式而改变。所以选项 D 的说法是错误的。22.有以下程序:#include iostreamusing namespace std;class sampleprivate:int n;public:sample()sample (int m)n=m;sample add(sample s1,sample s2)this-n=s1.n+


    注意事项

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




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

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

    收起
    展开