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

    【计算机类职业资格】国家计算机二级(C++)83及答案解析.doc

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

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

    【计算机类职业资格】国家计算机二级(C++)83及答案解析.doc

    1、国家计算机二级(C+)83 及答案解析(总分:460.00,做题时间:120 分钟)一、选择题(每小题 2 分,共 70 分) 下列各(总题数:35,分数:70.00)1.下列不是描述类的成员函数的是( )。(分数:2.00)A.a02*1B.a13C.a4-20D.a042.有以下程序: main() int a=1,b; for(b=1;b=8)break; if(a%2=1)a+=5;continue; a-=3; printf(“%d/n“,b); 程序运行后的输出结果是_。 (分数:2.00)A.3B.4C.5D.63.下列运算符中全都可以被友元函数重载的是( )。(分数:2.00)

    2、A.0B.1C.2D.34.while 和 do-while 循环的主要区别是( )。(分数:2.00)A.do-while 的循环体至少无条件执行一次B.while 的循环控制条件比 do-while 的循环控制条件更严格C.do-while 允许从外部转到循环体内D.do-while 的循环体不能是复合语句5.虚函数支持多态调用,一个基类的指针可以指向派生类的对象,而且通过这样的指针调用虚函数时,被调用的是指针所指的实际对象的虚函数,而非虚函数不支持多态调用。有如下程序: #includediostream using namespace std; class Base public: v

    3、irtual void f()toutg(); return 0; 、 运行时输出的结果是(分数:2.00)A.f+g+B.f0+g+C.f+gO+D.f0+g0+6.下列描述中正确的是_。 (分数:2.00)A.软件工程只是解决软件项目的管理问题B.软件工程主要解决软件产品的生产率问题C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则D.软件工程只是解决软件开发中的技术问题7.C+语言中类定义中默认的访问权限是( )。(分数:2.00)A.publicB.protectedC.pfivateD.default8.下面的语句中错误的是( )。(分数:2.00)A.ItemListe

    4、nerB.ActionListenerC.ContainerListenerD.WindowsListener9.有以下程序 main() int c=35;printf(“%d/n“,c 程序运行后的输出结果是_。 (分数:2.00)A.0B.70C.35D.110.下列关于模板的说法正确的是( )。(分数:2.00)A.模板的实参在任何时候都可以省略B.类模板与模板类所指的是同一概念C.类模板的参数必须是虚拟类型的D.类模板中的成员函数全部都是模板函数11.下列字符串中可以用作 C+语言标识符的是( )。(分数:2.00)A.EDITB.BROWSEC.REPLACED.CHANGE12.

    5、下列语句中,错误的是_。(分数:2.00)A.const int buffer=256;B.const double*point;C.int const buffer=256;D.double*const point;13.为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为 ( )。(分数:2.00)A.publicB.protectedC.privateD.static14.有如下类定义: class Point private: static int how_many; ; _how_many=0; 要初始化 Point 类的静态成员 how_many,下

    6、划线处应填入的内容是 (分数:2.00)A.intB.static intC.int Point: :D.static int Point15.以下哪个基类中的成员函数表示纯虚函数?(分数:2.00)A.virtual void vf(int)B.void vf(int)=0C.virtual void vf(=0)D.virtual void yf(int) 16.有以下程序 #includestringh #includeiostreamh void main( ) char *p=“abcde/0fghjik/0“; cout strlen(p); 程序运行后的输出结果是( )。 (分数

    7、:2.00)A.12B.15C.6D.517.下面关于数组的初始化正确的是( )。(分数:2.00)A.char str :a,b,cB.char str2=a,b,cC.char str23=a,b,c,d,e,fD.char str( )=a,b,c18.下列说法正确的是( )。(分数:2.00)A.内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方B.内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方C.类的内联函数必须在类体内定义D.类的内联函数必须在类体外通过加关键字 inline 定义19.有以下程序: point(char *p)p+=3; main() ch

    8、ar b4=a,b,c,d,*p=b; point(p);printf(“%c/n“,*p); 程序运行后的输出结果是_。 (分数:2.00)A.aB.bC.cD.d20.下列程序的输出结果是( )。 #includeiostreamh class Myclass public:Myclass(int i=0,intj=0) x=i; y=j; void show( ) cout “x=“ x “ “ “y=“ y end1; void show( )const cout “x=“ “ “ “y= y end1; privated: int x; int y; ; void main( ) M

    9、yclass my1(3,4); const my2(7,8); my1show( );my2show( ); (分数:2.00)A.line 4B.line 6C.line 7D.line 821.函数 fun 的返回值是( )。 fun(char*a,char*b) intnum=0,n=0; while(*(a+num)!=/0)num+; while(bn)*(a+num)=bn;num+;n+; returnnum; (分数:2.00)A.j=i;B.j=(long)i;C.i=(int)j;D.i=j;22.sizeof(float)是( )。(分数:2.00)A.一个双精度型表达

    10、式B.一个整型表达式C.一种函数调用D.一个不合法的表达式23.以下哪个特征不是面向对象思想中的主要特征?(分数:2.00)A.只能读B.只能用来编辑C.可以读也可以编辑D.对编辑框设置无效24.已有定义:char a=“xyz“,b=x,y,z;,以下叙述中正确的是_。 (分数:2.00)A.数组 a 和 b 的长度相同B.a 数组长度小于 b 数组长度C.a 数组长度大于 b 数组长度D.上述说法都不对25.下列程序的运行结果为( )。 #includeiostreamh void main( ) int a=2; int b=a+1; cout a/b endl; (分数:2.00)A.

    11、0.66667B.0C.0.7D.0.6666666626.下列选项中不属于结构化程序设计方法的是_。 (分数:2.00)A.自顶向下B.逐步求精C.模块化D.可复用27.有如下类定义: class MyBase int k; public: MyBase(int n=0):k(n) int value()constreturn k; ; class MyDerived:My Base int j; public: MyDerived(int i):j(i) iny getK()constreturn k; int getJ()constreturn j; 编译时发现有一处语法错误,对这个错误

    12、最准确的描述是【 】 (分数:2.00)A.函数 getK 试图访问基类的私有成员变量 kB.在类 MyDerived 的定义中,基类名 MyBase 前缺少关键字 public、protected 或 privateC.类 MyDerived 缺少一个无参的构造函数D.类 MyDerived 的构造函数没有对基类数据成员 k 进行初始化28.下面程序错误的语句是( )。 #include“ iostreamh“ void main( ) int A=0; int scanf(“%f%f%f“, if(= 2)printf(“YES/n“); /*a、b、c 能构成三角形*/ else pri

    13、ntf(“NO/n“); /*a、b、c 不能构成三角形*/ (分数:30.00)填空项 1:_42.下面程序的功能是将字符数组 a 中下标值为偶数的元素从小到大排列,其他元素不变,请填空。 #includeiostreamh #includestringh void main1 char a =“clanguage“,t; int i,j,k; k=strlen(A) ; for(i=;0 i =k-2;i+=2= for(j=i+2;j =k; 2= if ( 3) t=ai;ai=aj;aj=t; cout a; cout end1;= (分数:30.00)填空项 1:_43.继承的方式

    14、有公有继承、私有继承和 13 种。(分数:30.00)填空项 1:_44.下面程序的运行结果是: 1。 fun(int t,int n) int i,m; if(n=1) return t0; else if(n=2) m=fun(t,n-1); return m; main2 int a=11,4,6,3,8,2,3,5,9,2; printf(“%d/n“,fun(a,10); (分数:30.00)填空项 1:_45.以下程序中函数 huiwen 的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串 yes!,否则函数返回字符串 no!,并在主函数中输出,所谓 回文即正向与反

    15、向的拼写都一样,例如:adgda。请填空。 #include char *huiwen(char *str) char *p1,*p2; int i,t=0; p1=str;p2= 1 ; for(i=0;i=8)break; if(a%2=1)a+=5;continue; a-=3; printf(“%d/n“,b); 程序运行后的输出结果是_。 (分数:2.00)A.3B.4 C.5D.6解析: break 和 continue 的区别是:continue 语句只结束本次循环,而不是终止整个循环的执行;而 break 语句则是结束整个循环过程,不再判断执行的条件是否成立。3.下列运算符中全

    16、都可以被友元函数重载的是( )。(分数:2.00)A.0B.1C.2 D.3解析:在 Visual Basic 中,BorderStyle 属性用来确定直线或形状的边界线线型, 可以取 7 种值: 0 - Transparent:表示透明; 1 - Solid:表示实线; 2 - Dash:表示虚线; 3 - Dot:表示点线; 4 - Dash - Dot:表示点划线; 5 - Dash - Dot-Dot:表示双点划线; 6 - Inside Solid:内实线; 4.while 和 do-while 循环的主要区别是( )。(分数:2.00)A.do-while 的循环体至少无条件执行一

    17、次 B.while 的循环控制条件比 do-while 的循环控制条件更严格C.do-while 允许从外部转到循环体内D.do-while 的循环体不能是复合语句解析:while 是先判断条件再执行语句;do-while 则是先执行一次语句再判断条件,从而决定是否继续再执行循环体中的语句,这正是二者主要区别。5.虚函数支持多态调用,一个基类的指针可以指向派生类的对象,而且通过这样的指针调用虚函数时,被调用的是指针所指的实际对象的虚函数,而非虚函数不支持多态调用。有如下程序: #includediostream using namespace std; class Base public: v

    18、irtual void f()toutg(); return 0; 、 运行时输出的结果是(分数:2.00)A.f+g+B.f0+g+ C.f+gO+D.f0+g0+解析:此题考查通过虚函数实现多态调用的方法。由于基类 Base 中 f()为虚函数,在派生类 Derived 中f()虽然重定义为虚陈述函数,根据虚函数支持多态调用的规则,基类指针*p 指向派生类对象 d,即Base*p=d,此时通过基类指针调用虚函数 f()时,被调用的是基类指针所指的实际对象 d 的虚函数 f(),调用实函数 g()时,则仍为基类的实函数 g(),所以输出结果为 fo+g+。6.下列描述中正确的是_。 (分数:

    19、2.00)A.软件工程只是解决软件项目的管理问题B.软件工程主要解决软件产品的生产率问题C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则 D.软件工程只是解决软件开发中的技术问题解析:软件工程是计算机软件开发和维护的工程学科,它采用工程的概念原理、技术和方法来开发和维护 软件,它把经过时间考验而证明正确的管理技术和当前能够得到的最好技术结合起来。7.C+语言中类定义中默认的访问权限是( )。(分数:2.00)A.publicB.protectedC.pfivate D.default解析:C+语言中类定义中默认的类的访问权限是 private。注意:C+语言中没有 default

    20、 权限。8.下面的语句中错误的是( )。(分数:2.00)A.ItemListener B.ActionListenerC.ContainerListenerD.WindowsListener解析:本题考查多态性的基本概念。多态性主要是指借助于指向对象的基类指针或引用调用一个虚函数。9.有以下程序 main() int c=35;printf(“%d/n“,c 程序运行后的输出结果是_。 (分数:2.00)A.0B.70C.35 D.1解析: 按位“与”时,1 B.const double*point;C.int const buffer=256;D.double*const point;解析

    21、:13.为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为 ( )。(分数:2.00)A.public B.protectedC.privateD.static解析:本题考查点为类成员的访问权限,public 关键字修饰的类成员可 以被类的对象通过成员操作符“”直接访问,protected 和 private 则不能,而 static 不能单 独修饰类的成员。14.有如下类定义: class Point private: static int how_many; ; _how_many=0; 要初始化 Point 类的静态成员 how_many,下划线处应填入

    22、的内容是 (分数:2.00)A.intB.static intC.int Point: : D.static int Point解析:static int n;是定义静态全局变量,int point 是定义类的。15.以下哪个基类中的成员函数表示纯虚函数?(分数:2.00)A.virtual void vf(int)B.void vf(int)=0 C.virtual void vf(=0)D.virtual void yf(int) 解析:C+中纯虚函数的定义与虚函数的关键字一样,在函数末尾要加上“=0”。16.有以下程序 #includestringh #includeiostreamh

    23、void main( ) char *p=“abcde/0fghjik/0“; cout strlen(p); 程序运行后的输出结果是( )。 (分数:2.00)A.12B.15C.6D.5 解析:C+浯言规定了一个字符串结束标志,以字符/0代表,在遇到/ o时,表示字符串结束,由它前面的字符组成字符串。17.下面关于数组的初始化正确的是( )。(分数:2.00)A.char str :a,b,c B.char str2=a,b,cC.char str23=a,b,c,d,e,fD.char str( )=a,b,c解析:本题考查的是字符数组的初始化。选项 B)中用 3 个元素初始化大小为 2

    24、 的数组,越界了;选项 C)中应该是 2 行 3 列的数组,题中使用 3 行 2 列初始化;选项 D)中数组合后应用方括号。18.下列说法正确的是( )。(分数:2.00)A.内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方B.内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方 C.类的内联函数必须在类体内定义D.类的内联函数必须在类体外通过加关键字 inline 定义解析:本题考查的是内联函数的定义,引入内联函数是为了解决程序中函数调用的效率问题,是以目标代码的增加为代价换取时间的节省;一般函数在运行时被调用,而调用的内联函数在编译时就被替代了,如果不加 inline

    25、关键字,则编译器会将在类说明部分定义的任何函数都被认定为内联函数。19.有以下程序: point(char *p)p+=3; main() char b4=a,b,c,d,*p=b; point(p);printf(“%c/n“,*p); 程序运行后的输出结果是_。 (分数:2.00)A.a B.bC.cD.d解析:在 C 语言中,函数的参数传递方式采用按值传递,因此不能通过调用函数的方式来改变指针本身的 值,只能改变指针所指变量的值。20.下列程序的输出结果是( )。 #includeiostreamh class Myclass public:Myclass(int i=0,intj=0)

    26、 x=i; y=j; void show( ) cout “x=“ x “ “ “y=“ y end1; void show( )const cout “x=“ “ “ “y= y end1; privated: int x; int y; ; void main( ) Myclass my1(3,4); const my2(7,8); my1show( );my2show( ); (分数:2.00)A.line 4B.line 6C.line 7 D.line 8解析:要为一个新对象分配空间必须执行 new Xxx( )调用,new 调用执行 以下的操作:为新对象分配空间并将其成员初始化为

    27、0 或者 null。执行类体中的初 始化(例如在类中有一个成员声明 int a=10;在第一步后 a=0,执行到第二步后 a=10)。 执行构造方法。变量被分配为一个到内存堆中的新对象的引用。21.函数 fun 的返回值是( )。 fun(char*a,char*b) intnum=0,n=0; while(*(a+num)!=/0)num+; while(bn)*(a+num)=bn;num+;n+; returnnum; (分数:2.00)A.j=i;B.j=(long)i;C.i=(int)j;D.i=j; 解析:+,-运算符不能用于常量表达式。22.sizeof(float)是( )。

    28、(分数:2.00)A.一个双精度型表达式B.一个整型表达式 C.一种函数调用D.一个不合法的表达式解析:该函数用于数据类型和变量。注意:size of 操作符不能用于函数,不完全类型或位字段。不完全类型指具有未知存储大小的数据类型,如未知存储大小的数组类型、void 类型等。23.以下哪个特征不是面向对象思想中的主要特征?(分数:2.00)A.只能读 B.只能用来编辑C.可以读也可以编辑D.对编辑框设置无效解析:键盘事件主要有“键按下”、“键释放”、“击键”等,没有“键锁定 ”。24.已有定义:char a=“xyz“,b=x,y,z;,以下叙述中正确的是_。 (分数:2.00)A.数组 a

    29、和 b 的长度相同B.a 数组长度小于 b 数组长度C.a 数组长度大于 b 数组长度 D.上述说法都不对解析:C 语言规定/0为字符串结束标志。所以“char a=“xyz“”的数组长度为 4,而“b=x,y,z;”的 数组长度为 3,数组长度与 strlen 函数所求的长度不同,本题是指数组占内存空间的大小。25.下列程序的运行结果为( )。 #includeiostreamh void main( ) int a=2; int b=a+1; cout a/b endl; (分数:2.00)A.0.66667B.0 C.0.7D.0.66666666解析:表达式值的类型是由操作数的类型决定

    30、的,因为本题的两个数都 是 int 型的,所以得出的结果也为 int 型,即去掉小数点后的部分,只取商的整数部分。26.下列选项中不属于结构化程序设计方法的是_。 (分数:2.00)A.自顶向下B.逐步求精C.模块化D.可复用 解析: 20 世纪 70 年代以来,提出了许多软件设计方法,主要有逐步求精:对复杂的问题,应设计一些 子目标作过渡,逐步细化;自顶向下:程序设计时应先考虑总体,后考虑细节;先考虑全局目标,后考 虑局部目标。不要一开始就过多追求众多的细节,先从最上层总目标开始设计,逐步使问题具体化;模 块化:一个复杂问题,肯定是由若干稍简单的问题构成。模块化是把程序要解决的总目标分解为分

    31、目标, 再进一步分解为具体的小目标,把每个小目标称为一个模块,而可复用是面向对象程序设计的一个优点。27.有如下类定义: class MyBase int k; public: MyBase(int n=0):k(n) int value()constreturn k; ; class MyDerived:My Base int j; public: MyDerived(int i):j(i) iny getK()constreturn k; int getJ()constreturn j; 编译时发现有一处语法错误,对这个错误最准确的描述是【 】 (分数:2.00)A.函数 getK 试图访

    32、问基类的私有成员变量 k B.在类 MyDerived 的定义中,基类名 MyBase 前缺少关键字 public、protected 或 privateC.类 MyDerived 缺少一个无参的构造函数D.类 MyDerived 的构造函数没有对基类数据成员 k 进行初始化解析:基类的私有成员是派生类不能直接访问的。所以在派生类 MYDriVed 中,成员函数 getk()是不能访问基类 MyBase 的私有数据成员 k。28.下面程序错误的语句是( )。 #include“ iostreamh“ void main( ) int A=0; int scanf(“%f%f%f“, if(=

    33、2)printf(“YES/n“); /*a、b、c 能构成三角形*/ else printf(“NO/n“); /*a、b、c 不能构成三角形*/ (分数:30.00)填空项 1:_ (正确答案:(a+bc) if(n=1) return t0; else if(n=2) m=fun(t,n-1); return m; main2 int a=11,4,6,3,8,2,3,5,9,2; printf(“%d/n“,fun(a,10); (分数:30.00)填空项 1:_ (正确答案:11)解析:此题主要考核的知识点是数组名作为函数参数及函数调用和参数的传递。调用实参可知 n=10,形参 数组

    34、 t 指向实参 a 的首地址 t0=11。执行 fun-|_|-函数的 if-else 语句,因为 n=10 所以执行 else 语句,在满足 if(n=2) 的条件下:m=fun(t0,9), m=fun(t0,8), m=fun(t0,7),m=fun(t0,2),.m=fun(t0,1),当 n=1 时满足 if(n=1)的条件,所以执行此处的 return 语句,返回数组首地址指向的值 t0,所以答案为 11。45.以下程序中函数 huiwen 的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串 yes!,否则函数返回字符串 no!,并在主函数中输出,所谓 回文即正向与

    35、反向的拼写都一样,例如:adgda。请填空。 #include char *huiwen(char *str) char *p1,*p2; int i,t=0; p1=str;p2= 1 ; for(i=0;i=strlen(str)/2;i+) if(*p1+!=*p2-)t=1;break; if(= 2 ) return(“yes!“); main3 else return(“no!“); char str50; printf(“Input:“); scanf(“%s“,str); printf(“%s/n“,= 4 ); (分数:30.00)填空项 1:_ (正确答案:p1+(strl

    36、en(str)-1) 或 str+(strlen(str)-1) , t=0 或 !(t!=0) 或 t!=1 或 !t , huiwen(str))解析:本题的要求是判断从键盘输入的字符串是否是回文,但在主函数中并没有完成此功能的代码,故第20 空应该填调用函数 huiwen 代码,即 huiwen(str)。 由于回文字符串是指正向与反向拼写都一样,所以对于一个字符串,如果正向顺序与反向顺序对应位置上的字符一样,则此字符串即为回文。在函数 huiwen 中,已用“p1=str”使得 p1 指向字符串 str 的第一个字符的地址,则第 18 空语句的功能应该是使得 p2 指向字符串 str

    37、的最后一个字符串的地址,故填 p1+(strlen(str)-1),由于 p1 与 str 指向的是同一个地址,所以,第 18 空也可以填 str+(strlen(str)-1)。在进行 for 循环时,如果 p1 所指向的字符与 p2 指向的字符不相同,则说明,字符串 str 不是回文,则用 t=1 标记,并退出循环,执行下面的 if 语句,由于题中要求如果是回文,则返回“yes!”,否则,返回“no!”。故当 t=0 的时候,说明字符串 str 为回文,所以第 19 应填 t=0 或 !(t!=0) 或 t!=1 或 !t。46.有如下定义: class MA int value ; pu

    38、blic: MA(int n=0)。value(n) ; MA*ta,tb 其中 MA类的对象名标识符是 1。(分数:30.00)填空项 1:_ (正确答案:Tb)解析:根据题意可知 MA 类的对象名标识符是 tb。47.在 ER 图中,矩形表示 1 。 (分数:30.00)填空项 1:_ (正确答案:实体集)解析:在 E-R 图中,矩形表示实体集,椭圆表示属性,菱形表示联系。 48.假定 A 为一个类,则语句 A(A &a);为该类 1 函数的原型说明。(分数:30.00)填空项 1:_ (正确答案:拷贝构造)解析:本题考查的是拷贝构造函数的定义,它是一种特殊的成员函数,作用是使用 一个已知的对象来初始化一个被创建的同类的对象,定义格式是类名: :拷贝构造函数名 (类名引用名)。


    注意事项

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




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

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

    收起
    展开