【计算机类职业资格】二级C++笔试-255及答案解析.doc
《【计算机类职业资格】二级C++笔试-255及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】二级C++笔试-255及答案解析.doc(34页珍藏版)》请在麦多课文档分享上搜索。
1、二级 C+笔试-255 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.在结构化设计方法中生成的结构图(SC) 中,带有箭头的连线表示(分数:2.00)A.模块之间的调用关系B.程序的组成成份C.控制程序的执行顺序D.数据的流向2.在关系模型中,(分数:2.00)A.为了建立一个关系,首先要构造数据的逻辑关系B.表示关系的二维表中各元组的每一个分量还可以分成若干数据项C.一个关系的属性名表称为关系模式D.一个关系可以包括多个二维表3.有以下程序:#inclydeiOStreamusing namespace std;int main()in
2、t x=15;while(x10break;coutxendl;return 0;执行后的输出结果是(分数:2.00)A.15B.16C.17D.184.若有以下程序:#inclideiostreamusing nameSpace std;class Apricate:int a;public:A(int i)a=iVoid disp()couta“,“;clas Bprivate:int b;public:B(int j)b=j;Void disp()coutb“,“;class C:publicB,public Aprivate:int c;public:C(int k):A(k-2),B
3、(k+2)c=k;void disp()A:disp();B:disp();coutcendl;int main()C obj(10);obj.disp();return 0;程序执行后的输出结果是(分数:2.00)A.10,10,10B.10,12,14C.8,10,12D.8,12,105.下列对变量的引用中,错误的是(分数:2.00)A.int a; int char *className()return baseName;class Derived: public baseprivate:char derivedName10;public:Derived()strcpy(derived
4、Name,“Derived“);char *myName()return derivedName;char *className()return derivedName;void showPtr(base int main()base bb;Derived dd;showPtr(dD) ;retum 0;动行后的输出结果为(分数:2.00)A.Derived BaseB.Base BaseC.Derived DerivedD.Base Derived12.以下程序段共有错误( )处。#include iostreamusing namespaces std;class Sampleprivat
5、e:int n;public:Sample(int i)n=i;void setvalue (int i)n=i;void display()cout”n=”nendl;int main()const Sample a(10);asetvalue(5);adisplay();return 0;(分数:2.00)A.1B.2C.3D.413.下列对模板的声明中,正确的是(分数:2.00)A.templateTB.templateclass T1,T2C.templateclassT1,class T2D.templateclassT1;class T214.通过公有派生类的对象,只能访问基类成员
6、中的(分数:2.00)A.公有成员B.私有成员C.保护成员D.公有成员和保护成员15.以下程序的输出结果是#includeiostream.hvoid main()int a=0,i;for(i=1;i5;i+)swich (i)case 0:case 3:a+=2;case 1:case 2:a+=3;default:a+=5;coutaendl;return;(分数:2.00)A.31B.13C.10D.2016.在进行任何 C流的操作后,都可以用 C流的有关成员函数检测流的状态;其中只能用于检测输入流状态的操作函数名称是(分数:2.00)A.failB.eofC.badD.good17.
7、下列关于 new 运算符的描述中错误的是(分数:2.00)A.使用运算符 new 创建对象数组时必须定义初始值B.使用运算符 new 创建对象时,会调用类的构造函数C.运算符 new 可以用来动态创建对象和对象数组D.使用 new 运算符创建的对象可以使用运算符 delete 删除18.若有一个 MyClass 类,则执行语句 MyClass a,b(2),*p;后,自动调用该类的构造函数 ( )次。(分数:2.00)A.2B.3C.4D.519.下列关于栈的叙述正确的是(分数:2.00)A.在栈中只能插入数据B.在栈中只能删除数据C.栈是先进先出的线性表D.栈是先进后出的线性表20.有以下程
8、序#includeiostreamusing namespace std;class sampleprivate:int x;public:sample (int(分数:2.00)A.x=a;friend double square (sample s);double square (sample s)return s.x*s.x;int main()sample s1(20),s2(30);coutsquare(s2)end1;return 0;执行结果是 A) 20B.30C.900D.40021.下列虚基类的声明中正确的是(分数:2.00)A.class virtual B:public
9、 AB.virtual class B:public AC.class B:public A virmalD.class B:virmal public A22.一个在基类中说明的虚函数,它在该基类中没有定义,但要求任何派生类都必须定义自己的版本,此虚函数又称为(分数:2.00)A.虚析构函数B.虚构造函数C.纯虚函数D.静态成员函数23.下面对对象概念描述错误的是(分数:2.00)A.任何对象都必须有继承性B.对象是属性和方法的封装体C.对象间的通讯靠消息传递D.操作是对象的动态属性24.以下非法的赋值表达式是(分数:2.00)A.n=(i=2,+i);B.j+;C.+(i+1);D.x=j
10、0;25.有以下程序:class Datepublic:Date(int y,int m,int D) ;year =y;month=m;day=d;Date(int y=2000)year=y;month=10;day=1;Date(Date p+;coutMyClass:sendl;return 0;运行后的输出结果是 【11】 。(分数:2.00)填空项 1:_47.有以下面程序:#includeiostreamusing namespace std;long fib(int n)if (n2)return(fib(n-1)+fib(n-2);elsereturn 2;int main(
11、)coutfib(3)end1;rcturn 0;则该程序的输出结果应该是 【12】 。(分数:2.00)填空项 1:_48.已知 int DBL(int n)return n+n;和 long DBL(long n)return n+n)是一个函数模板的两个实例,则该函数模板的定义是 【13】 。(分数:2.00)填空项 1:_49.有以下程序#includeiostreamusing namespace std;class Baseint a;public:Base(int x) a=x;vuid show()couta;class DeriVed:public Baseint b;pub
12、lic:Derived (int i):Base(i+1),b(i)void show()coutb;int main()Base b(5),*pb;Derived d(1);pb=break;coutxendl;return 0;执行后的输出结果是(分数:2.00)A.15B.16C.17 D.18解析:解析 本题考核选择语句与循环语句的嵌套。由程序可知,当 x=16 时,满足 if 条件表达式,进入 if 分支,执行“x+;break;”,所以最后程序输出 x 的值为 17。4.若有以下程序:#inclideiostreamusing nameSpace std;class Apricat
13、e:int a;public:A(int i)a=iVoid disp()couta“,“;clas Bprivate:int b;public:B(int j)b=j;Void disp()coutb“,“;class C:publicB,public Aprivate:int c;public:C(int k):A(k-2),B(k+2)c=k;void disp()A:disp();B:disp();coutcendl;int main()C obj(10);obj.disp();return 0;程序执行后的输出结果是(分数:2.00)A.10,10,10B.10,12,14C.8,1
14、0,12D.8,12,10 解析:解析 本题考核派生类构造函数的使用。本题中,派生 C 具有多重继承关系,所以在派生类 C 的构造函数中应该包含基类 A 和 B 的成员初始化列表。5.下列对变量的引用中,错误的是(分数:2.00)A.int a; int char *className()return baseName;class Derived: public baseprivate:char derivedName10;public:Derived()strcpy(derivedName,“Derived“);char *myName()return derivedName;char *c
15、lassName()return derivedName;void showPtr(base int main()base bb;Derived dd;showPtr(dD) ;retum 0;动行后的输出结果为(分数:2.00)A.Derived Base B.Base BaseC.Derived DerivedD.Base Derived解析:解析 本题考核虚函数的应用。类 Derived 是从基类 Base 公有派生而来的。因此, Derived 是基类 Base 的子类型。main()函数中定义了一个基类对象 bb 和一个派生类对象 dd。从程序中可看出派生类 Derived 的对象
16、dd 交给了处理基类 Base 的对象的函数 showPtr 进行处理。由于在基类中函数 myName被定义成虚函数。所以在函数 showPtr 中调用的 myName 函数为派生类的成员函数 myName,从而输出Derived。然后输出 className,即基类名称 Base。12.以下程序段共有错误( )处。#include iostreamusing namespaces std;class Sampleprivate:int n;public:Sample(int i)n=i;void setvalue (int i)n=i;void display()cout”n=”nendl;
17、int main()const Sample a(10);asetvalue(5);adisplay();return 0;(分数:2.00)A.1B.2 C.3D.4解析:解析 本题考核常对象、常数据成员和常成员函数。本程序中有两个错误:第 1 个错误是a.setvalue(5);语句,由于对象 a 为常对象,所以对象 a 的私有数据成员 n 不能被更新;第 2 处错误是语句 a.display();。由于对象 a 为常对象,所以通过对象 a 只能调用它的成员函数,而成员函数display()不是常成员函数。13.下列对模板的声明中,正确的是(分数:2.00)A.templateTB.tem
18、plateclass T1,T2C.templateclassT1,class T2 D.templateclassT1;class T2解析:分析本题考核模板的定义。模板定义的类型参数表中包含一个或多个由逗号分隔的类型参数项,每一项由关键字 class 后跟一个用户命名的标识符,此标识符为类型参数,它不是一种数据类型,但可以同一般数据类型一样使用。在使用类模板时,必须将其实例化,即用实际的数据类型代替它。14.通过公有派生类的对象,只能访问基类成员中的(分数:2.00)A.公有成员 B.私有成员C.保护成员D.公有成员和保护成员解析:解析 本题考核派生类的访问权限。派生类的继承方式有三种:公
19、有继承 public、私有继承private 和保护继承 protected。当公有派生时,派生类成员函数只能访问基类的公有成员和保护成员,但是通过派生类的对象只能访问基类的公有成员。15.以下程序的输出结果是#includeiostream.hvoid main()int a=0,i;for(i=1;i5;i+)swich (i)case 0:case 3:a+=2;case 1:case 2:a+=3;default:a+=5;coutaendl;return;(分数:2.00)A.31 B.13C.10D.20解析:解析 本题考核 for 语句和 switch 语句的综合运用。switc
20、h 语句的执行过程是:在 switch 后面的表达式的值和 case 后面常量表达式的值吻合时,就执行后面的语句。如果在该语句的后面没有 break 语句,则继续执行下一个 case,直到遇到 break 语句或switch 多分支的结束。在 switch 语句中,break 语句的作用是使流程跳出 switch 结构,终止 switch 语句的执行。因为每个 case 语句后面都没有 break 语句,所以,第 1 次循环(i=1)执行后,a 的值为 8。第2 次循环(i=2)执行过后,a 的值变为 16。第 3 次循环(i=3)执行过后,a 的值变为 26。第 4 次循环执行过后,a 的值
21、变为 31。然后执行 i+,这时循环条件为假,结束循环。所以最后 a 的值为 31。16.在进行任何 C流的操作后,都可以用 C流的有关成员函数检测流的状态;其中只能用于检测输入流状态的操作函数名称是(分数:2.00)A.failB.eof C.badD.good解析:解析 本题考核 C流的文件操作。C中可以用文件流对象的下列成员函数来判别文件流的当前状态。函数 is_open():判定流对象是否与一个打开的文件相联系,若是,返回 true,否则返回false:函数 good():刚进行的操作成功时返回 tree,否则返回 false。函数 fail():与 good()相反,刚进行的操作失败
22、时返回 true,否则返回 false。函数 bad():如果进行了非法操作返回 true,否则返回false。函数 eof():进行输入操作时,若到达文件尾返回 true,否则返回 false。其中,eof 函数只能用于输入流操作。17.下列关于 new 运算符的描述中错误的是(分数:2.00)A.使用运算符 new 创建对象数组时必须定义初始值 B.使用运算符 new 创建对象时,会调用类的构造函数C.运算符 new 可以用来动态创建对象和对象数组D.使用 new 运算符创建的对象可以使用运算符 delete 删除解析:解析 本题考核运算符 new。先来了解运算符 new:运算符 new
23、返回指定类型的一个指针,如果分配失败(如没有足够的内存空间),则返回 0。它与 delete 运算符一起使用,以达到直接进行动态内存分配和释放的目的。对于 A) 选项,使用运算符 new 创建对象数组时只能指定分配内存的大小,不能为该数组指定初始值,其初始值为缺省值,因此类中必须定义缺省构造函数。所以 A) 选项的描述是错误的。B) 、C) 和 D) 选项的描述都是正确的。18.若有一个 MyClass 类,则执行语句 MyClass a,b(2),*p;后,自动调用该类的构造函数 ( )次。(分数:2.00)A.2 B.3C.4D.5解析:解析 本题考核构造函数的调用。C在创建一个对象时,会
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 二级 笔试 255 答案 解析 DOC
