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

上传人:arrownail386 文档编号:1324141 上传时间:2019-10-17 格式:DOC 页数:17 大小:60.50KB
下载 相关 举报
【计算机类职业资格】二级C++-77及答案解析.doc_第1页
第1页 / 共17页
【计算机类职业资格】二级C++-77及答案解析.doc_第2页
第2页 / 共17页
【计算机类职业资格】二级C++-77及答案解析.doc_第3页
第3页 / 共17页
【计算机类职业资格】二级C++-77及答案解析.doc_第4页
第4页 / 共17页
【计算机类职业资格】二级C++-77及答案解析.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

1、二级 C+-77 及答案解析(总分:62.00,做题时间:90 分钟)一、选择题(总题数:20,分数:33.00)1.下面的哪个选项不能作为函数的返回类型?(分数:1.00)A.voidB.intC.newD.long2.有下列程序: #includestdio.h void main() char *a=“abcd“,“ef“,“gh“,“ijk“);int i; for(i=0;i4;i+)printf(“%c“,*ai); 程序运行后的输出结果是 _ 。(分数:2.00)A.aegiB.dfhkC.abcdD.abcdefghijk3.下列关于构造函数说法不正确的是(分数:1.00)A.

2、构造函数必须与类同名B.构造函数可以省略不写C.构造函数必须有返回值D.在构造函数中可以对类中的成员进行初始化4.不能作为重载函数的调用的依据是(分数:2.00)A.参数个数B.参数类型C.函数类型D.函数名称5.有以下程序: #includeiostream using namespace std; class sample private: int x; public: sample(int a) x=a; friend double square(sample s); ; double square(sample s) return S.X*S.K; int main() sample

3、s1(20),s2(30); coutsquare(s2)endl; return 0; 执行结果是 _ 。(分数:2.00)A.20B.30C.900D.4006.下列关于类和对象的叙述中,错误的是(分数:1.00)A.一个类只能有一个对象B.对象是类的具体实例C.类是对某一类对象的抽象D.类和对象的关系是一种数据类型与变量的关系7.有以下语句,则对 a 数组元素的引用不正确的是(0i9) int a10=0,1,2,3,4,5,6,7,8,9,*p=a;(分数:1.00)A.ap=a)B.*(int *y; *p; int dt4=10,20,30,40; struct st aa4= 5

4、0, main() p=aa; cout+p-x; cout(+p)-x; cout+(*p-y); (分数:2.00)A.10 20 20B.50 60 21C.51 60 21D.60 70 3117.表达式 1056%3 的值是(分数:2.00)A.-1B.非零值C.0D.118.下列关于类模板的模板参数的叙述中,错误的是 _ 。(分数:2.00)A.模板参数可以作为数据成员的类型B.模板参数可以作为成员函数的返回类型C.模板参数可以作为成员函数的参数类型D.模板参数不能作为成员函数的局部变量的类型19.数据库系统的核心是(分数:1.00)A.数据模型B.数据库管理系统C.数据库D.数据

5、库管理员20.以下程序企图把从键盘终端输入的字符输出到名为 abc.txt 的文件中,当从终端读到字符“#“时,结束输入和输出操作。但该程序有错。 #include iostream #include fstream using namespace std; int main() ofstream ofile; char ch; ofile.open(“d:/abc.txt“, “W“); do cinch; ofile.put(ch); while(ch!=“#“); ofile.close(); return 0; 程序出错的原因是( )。(分数:1.00)A.成员函数 open 调用形式

6、错误B.输入文件没有关闭C.成员函数 put 调用形式错误D.对象 ofile 定义错误二、填空题(总题数:17,分数:29.00)21.下列程序的输出结果为 Object id=0 Object id=1 请将程序补充完整。 #includeiostream using namespace std; class Point public: Point(int xx=0,intyy=0)X=xx;Y=yy;countP+; Point( )eountP-; int GetX( )return X; int GetY( )return Y; static void GetC( )cout“Obj

7、ect id=“countPendl; private: int X,Y; static int countP; ; 1/静态数据成员的初始化 int main( ) Point:GetC( ); Point A(4,5); AGetC( ); return 0; (分数:2.00)22. 1 是一种特殊的成员函数,它主要用来为对象分配内存空间,对类的数据成员进行初始化并执行对象的其他内部管理操作。 (分数:1.00)23.数据结构分为逻辑结构与存储结构,循环队列属于 _ 1_ 。 (分数:2.00)24.已知程序的结果为 1 2 3,请填空。 #includeiostream.h templ

8、ateclass T class A public: T x,y,Z; void display( ) cout x “ “ y “ “ z; ; void main( ) Ainta1; 1 2_ 3 4_ 5 6_ a1display( ); (分数:1.00)25.软件测试分为白箱(盒)测试和黑箱(盒)测试。等价类划分法属于 _ 1_ 测试。 (分数:2.00)26.与二维表中的“行”的概念最接近的概念是 1。 (分数:2.00)27.对于派生类的构造函数,在定义对象时构造函数的执行顺序:先执行调用 1 的构造函数,再执行调用子对象类的构造函数,最后执行派生类的构造函数体中的内容。 (分

9、数:2.00)28.重新定义标识符的作用域规定是外层变量被隐藏, _ 1_ 变量是可见的。 (分数:2.00)29.在长度为 n 的有序线性表中进行二分查找。最坏的情况下,需要的比较次数为 _ 1_ 。 (分数:1.00)30.下列程序的输出结果是 1。 #includeiostream.h templateclass T T max(T x,int n) int i; T maxv=x0; for(i=1;in;i+) if(maxvxi) maxv=xi; return maxv; void main( ) int a=3,2,7,6,8,9; double b=1.2,3.4,2.5,7

10、.3,6.8; coutmax(a,4)“,“max(b,3)endl; (分数:2.00)31.已知_-X 树中序遍历序列是 cbade,它的后序遍历序列是 cbeda,前序遍历序列是 _ 1_ 。 (分数:2.00)32.利用继承能够实现 1。这种实现缩短了程序的开发时间,促使开发人员复用已经测试和调试好的高质量软件。 (分数:2.00)33.当输入 d 的值 22 时,以下程序的输出结果是 _ 1_ 。 void bin (int b) if (b= 2) bin(b/2); coutb%2; void main() int d; cind; bin(D) ; (分数:2.00)34.有

11、如下程序: #includeiostream using namespace std; class CA public: CA()cout+A; ; class CB:private CA public: CB()coutB; ; int main() CA a; CB b; return 0; 这个程序的输出结果是 1。 (分数:2.00)35.Staff 类含有 int 型数据成员 ID,两个 Staff 对象相等是指它们的 ID 相同。下面的函数重载了运算符“=”,它用来判断两个 Staff 对象是否相等,相等时返回 true,否则返回 false。请将横线处缺失部分补充完整。 bool

12、 Staff:Staff=(const Staff (分数:2.00)36.若有以下程序: #includeiostream using namespace std; class Base public: Base ( ) x=0; int x; ; class Derived1 : virtual public Base public: Derived1() x=10; ; class Derived2 : virtual public Base public: Derived2() x=20; ; class Derived : public Derived1,protected Deri

13、ved2 ; int main() Derived obj; coutobj.xend1; return 0; 该程序运行后的输出结果是 1。 (分数:1.00)37.当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算。这种情况称为 1 2_ 。 (分数:1.00)二级 C+-77 答案解析(总分:62.00,做题时间:90 分钟)一、选择题(总题数:20,分数:33.00)1.下面的哪个选项不能作为函数的返回类型?(分数:1.00)A.voidB.intC.new D.long解析:解析 new 是动态申请内存空间时使用的关键宇,不能作为函数的返回类型,选项 A)为无

14、返回值,选项 B)为返回整型,选项 D)为返回长整型。2.有下列程序: #includestdio.h void main() char *a=“abcd“,“ef“,“gh“,“ijk“);int i; for(i=0;i4;i+)printf(“%c“,*ai); 程序运行后的输出结果是 _ 。(分数:2.00)A.aegi B.dfhkC.abcdD.abcdefghijk解析:解析 *a表示一个字符串数组,for 循环的作用是输出字符串数组中每一次字符串的第一个字符。所以正确答案为选项 A。3.下列关于构造函数说法不正确的是(分数:1.00)A.构造函数必须与类同名B.构造函数可以省略

15、不写C.构造函数必须有返回值 D.在构造函数中可以对类中的成员进行初始化解析:解析 构造函数是一类特殊的函数,其特点是函数名与类同名,没有返回值,也可以省略不写,还可以对类中的成员进行初始化。4.不能作为重载函数的调用的依据是(分数:2.00)A.参数个数B.参数类型C.函数类型D.函数名称 解析:解析 所谓重载函数是指同一个函数名可以对应多个函数的实现,编译器会根据参数个数、参数类型和函数返回值类型不同而自动调用相应的函数。5.有以下程序: #includeiostream using namespace std; class sample private: int x; public: s

16、ample(int a) x=a; friend double square(sample s); ; double square(sample s) return S.X*S.K; int main() sample s1(20),s2(30); coutsquare(s2)endl; return 0; 执行结果是 _ 。(分数:2.00)A.20B.30C.900 D.400解析:解析 本题考查友元函数的应用。程序中函数 square 是类 sample 的一个友元函数,它可以直接访问类 sam- pie 的所有成员。它的功能是返回类 sample 的私有数据成员 x 的平方。所以程序的

17、执行结果是 900。6.下列关于类和对象的叙述中,错误的是(分数:1.00)A.一个类只能有一个对象 B.对象是类的具体实例C.类是对某一类对象的抽象D.类和对象的关系是一种数据类型与变量的关系解析:解析 类可以理解为一种特殊的数据类型,与 int 等基本数据类型一样,可以声明多个对象。7.有以下语句,则对 a 数组元素的引用不正确的是(0i9) int a10=0,1,2,3,4,5,6,7,8,9,*p=a;(分数:1.00)A.ap=a)B.*(int *y; *p; int dt4=10,20,30,40; struct st aa4= 50, main() p=aa; cout+p-

18、x; cout(+p)-x; cout+(*p-y); (分数:2.00)A.10 20 20B.50 60 21C.51 60 21 D.60 70 31解析:17.表达式 1056%3 的值是(分数:2.00)A.-1B.非零值C.0 D.1解析:18.下列关于类模板的模板参数的叙述中,错误的是 _ 。(分数:2.00)A.模板参数可以作为数据成员的类型B.模板参数可以作为成员函数的返回类型C.模板参数可以作为成员函数的参数类型D.模板参数不能作为成员函数的局部变量的类型 解析:19.数据库系统的核心是(分数:1.00)A.数据模型B.数据库管理系统 C.数据库D.数据库管理员解析:解析

19、数据库系统的核心是数据库管理系统(DBMS)。20.以下程序企图把从键盘终端输入的字符输出到名为 abc.txt 的文件中,当从终端读到字符“#“时,结束输入和输出操作。但该程序有错。 #include iostream #include fstream using namespace std; int main() ofstream ofile; char ch; ofile.open(“d:/abc.txt“, “W“); do cinch; ofile.put(ch); while(ch!=“#“); ofile.close(); return 0; 程序出错的原因是( )。(分数:1.

20、00)A.成员函数 open 调用形式错误 B.输入文件没有关闭C.成员函数 put 调用形式错误D.对象 ofile 定义错误解析:解析 本题考核文件的打开。C+中,可以在定义文件流对象的同时打开文件,也可以在定义文件流对象以后用 open()函数打开文件。可以通过构造函数或 open 函数的第 2 个参数,确定文件的打开模式。打开模式用下列常量表示: ios_base:app 为添加数据而打开(总是在文件尾部写); ios_ase:binary 作为二进制文件打开: ios_ase:in 为输入而打开: ios_ase:out 为输出而打开; ios_base:tmnc 若文件存在,截为空

21、文件; ios_base:ate 打开时定位于文件尾。 题中成员函数 open()的第 2 个实参不符合 C+的打开模式,所以产生调用错误。二、填空题(总题数:17,分数:29.00)21.下列程序的输出结果为 Object id=0 Object id=1 请将程序补充完整。 #includeiostream using namespace std; class Point public: Point(int xx=0,intyy=0)X=xx;Y=yy;countP+; Point( )eountP-; int GetX( )return X; int GetY( )return Y; s

22、tatic void GetC( )cout“Object id=“countPendl; private: int X,Y; static int countP; ; 1/静态数据成员的初始化 int main( ) Point:GetC( ); Point A(4,5); AGetC( ); return 0; (分数:2.00)解析:int Point:countP=0; 解析 静态数据成员在类中声明,在使用前初始化,一般格式为: 数据类型类名:静态数据成员名=初始值22. 1 是一种特殊的成员函数,它主要用来为对象分配内存空间,对类的数据成员进行初始化并执行对象的其他内部管理操作。 (

23、分数:1.00)解析:构造函数23.数据结构分为逻辑结构与存储结构,循环队列属于 _ 1_ 。 (分数:2.00)解析:存储结构解析 数据结构分为逻辑结构与存储结构,循环队列属于存储结构因此,本题的正确答案为存储结构。24.已知程序的结果为 1 2 3,请填空。 #includeiostream.h templateclass T class A public: T x,y,Z; void display( ) cout x “ “ y “ “ z; ; void main( ) Ainta1; 1 2_ 3 4_ 5 6_ a1display( ); (分数:1.00)解析:al.x=1;

24、a1.y=2; a1.z=3; 解析 通过程序的结果知道数据类型是 int,所以调用时声明模板实参为 int 的,再对x,y,z 进行赋值。25.软件测试分为白箱(盒)测试和黑箱(盒)测试。等价类划分法属于 _ 1_ 测试。 (分数:2.00)解析:黑箱或黑盒或黑箱(盒)解析 本题考查软件工程的测试。对于软件测试而言,黑箱(盒)测试是把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当的接收输入数据产生正确的输出信息。与黑箱(盒)测试相反,白箱(盒)测试的前提是可以把程序看成装在一个透明的白盒子里,也就是完全了解程序的结构

25、和处理过程。它按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按照预定要求正确处理,等价类划分是把所有可能的输入数据(有效的和无效的)划分成若干个等价类,则可以合理的做出下述假定:每类中的一个典型值在测试中的作用与这一类中所有其他值的作用相同。显然,等价类划分完全不考虑程序的内部结构和处理过程,因此它属于黑箱(盒)测试。26.与二维表中的“行”的概念最接近的概念是 1。 (分数:2.00)解析:元组解析 在关系模型中,数据结构用单一的二维表结构来表示实体及实体间的联系。一个关系对应一个二维表。 二维表中的列称为属性,属性值的取值范围称为值域。二维表中的行称为一个元组。27.对于派生类的

26、构造函数,在定义对象时构造函数的执行顺序:先执行调用 1 的构造函数,再执行调用子对象类的构造函数,最后执行派生类的构造函数体中的内容。 (分数:2.00)解析:基类解析 对于派生类的构造函数,在定义对象时构造函数的执行顺序:先执行调用基类的构造函数,再执行调用子对象类的构造函数,最后执行派生类的构造函数体中的内容。所以本题填:基类。28.重新定义标识符的作用域规定是外层变量被隐藏, _ 1_ 变量是可见的。 (分数:2.00)解析:内层29.在长度为 n 的有序线性表中进行二分查找。最坏的情况下,需要的比较次数为 _ 1_ 。 (分数:1.00)解析:log 2 n 解析 对于长度为 n 的

27、有序线性表,在最坏情况下,二分查找只需要比较 log 2 n 次,而顺序查找需要比较 n 次。30.下列程序的输出结果是 1。 #includeiostream.h templateclass T T max(T x,int n) int i; T maxv=x0; for(i=1;in;i+) if(maxvxi) maxv=xi; return maxv; void main( ) int a=3,2,7,6,8,9; double b=1.2,3.4,2.5,7.3,6.8; coutmax(a,4)“,“max(b,3)endl; (分数:2.00)解析:7,3.4解析 函数的功能是求

28、出数组中指定范围的元素中的最大值。所以在 a 数组中前四个数据中最大值为 7,数组 b 中前 3 个元素中最大值为 3.4。31.已知_-X 树中序遍历序列是 cbade,它的后序遍历序列是 cbeda,前序遍历序列是 _ 1_ 。 (分数:2.00)解析:abcde解析 前序遍历序列的顺序是先根,再左子树,最后右子树;中序遍历序列的顺序是先左子树,再根,最后右子树;后序遍历序列的顺序是先左子树,再右子树,最后根。后序遍历序列中最后一个是根节点(a),确定根节点后,从中序遍历序列中即可确定左子树(cb)和右子树(de),然后再从后序遍历序列中确定左子树的根(b)及其左子树(c)和右子树(空),

29、从后序遍历序列中确定右子树的根(d)及其左子树(空)和右子树(e),描绘成图,然后求出前序遍历序列。32.利用继承能够实现 1。这种实现缩短了程序的开发时间,促使开发人员复用已经测试和调试好的高质量软件。 (分数:2.00)解析:软件复用33.当输入 d 的值 22 时,以下程序的输出结果是 _ 1_ 。 void bin (int b) if (b= 2) bin(b/2); coutb%2; void main() int d; cind; bin(D) ; (分数:2.00)解析:1011034.有如下程序: #includeiostream using namespace std; c

30、lass CA public: CA()cout+A; ; class CB:private CA public: CB()coutB; ; int main() CA a; CB b; return 0; 这个程序的输出结果是 1。 (分数:2.00)解析:AAB。解析 本题考查的是派生类的构造函数。建立派生类对象时,构造函数的执行顺序:执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺序(自左向右),接着执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序-执行派生类的构造函数。题目中首先定义了类 CA 的对象a,输出A;然后定义 CB 类的对象 b,因为 CB 类派生自

31、 CA 类,所以会先执行 CA 类的构造函数,再执行 CB 类的构造函数,即输出A和B。35.Staff 类含有 int 型数据成员 ID,两个 Staff 对象相等是指它们的 ID 相同。下面的函数重载了运算符“=”,它用来判断两个 Staff 对象是否相等,相等时返回 true,否则返回 false。请将横线处缺失部分补充完整。 bool Staff:Staff=(const Staff (分数:2.00)解析:ID=s.ID 或 s.ID=ID 或 this-ID=s.ID 或 s.ID=this-ID解析 此题考查运算符的重载。运算符“=”作为成员函数重载,所以横线处填入的表达式应该是

32、对象本身 ID 与对象 s.ID 的比较表达式。36.若有以下程序: #includeiostream using namespace std; class Base public: Base ( ) x=0; int x; ; class Derived1 : virtual public Base public: Derived1() x=10; ; class Derived2 : virtual public Base public: Derived2() x=20; ; class Derived : public Derived1,protected Derived2 ; int

33、main() Derived obj; coutobj.xend1; return 0; 该程序运行后的输出结果是 1。 (分数:1.00)解析:20解析 本题中,虽然 Derived1 和 Derived2 都是由共同的基类 Base 派生而来的,但由于引入了虚基类,使得它们分别对应基类的不同副本。这时数据成员 x 只存在一份拷贝,不论在类 Derived1 修改,还是在类 Derived2 中修改,都是直接对这惟一拷贝进行操作。本题程序执行语句“Derived obj”时,就会先调用虚基类 Base 的构造函数,使得 x=0,然后执行类 Derived1 的构造函数使得 x=10,再执行类Derived2 的构造函数,使得 x=20。最后输出 x 的值为 20。37.当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算。这种情况称为 1 2_ 。 (分数:1.00)解析:上溢

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

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