1、二级 C+-223 及答案解析(总分:70.00,做题时间:90 分钟)一、选择题(总题数:38,分数:70.00)1.若一个函数的原型为“int * Xfun1(int x.int”,则该函数的返回值类型为_。(分数:2.50)A.int*B.intC.int 在下列对 func 的调用中,错误的是_。(分数:2.00)A.func(3,5);B.func(3.0,5.5);C.func(3,5.5);D.funcint(3,5.5);4.下列关于 this 指针的叙述中正确的是_。(分数:1.00)A.任何与类相关的函数都有 this 指针B.类的成员函数都有 this 指针C.类的友元函
2、数都有 this 指针D.类的非静态成员函数才有 this 指针5.结构化分析方法是面向 _ 的自顶向下、逐步求精进行需求分析的方法。(分数:2.00)A.对象B.数据结构C.数据流D.目标6.在 C+中既可以用于文件输入又可以用于文件输出的流类是_。(分数:2.50)A.fstreamB.ifstreamC.ofstreamD.iostream7.计算斐波那契数列第 n 项的函数定义如下: int fib(int n) if(n=0) return 1; else if(n=1) return 2; else return fib(n-1)+fib(n-2); 若执行函数调用表达式 fib(
3、2),函数 fib 被调用的次数是_。(分数:2.50)A.1B.2C.3D.48.下列有关继承和派生的叙述中,正确的是_。(分数:3.00)A.如果一个派生类私有继承其基类,则该派生类对象不能访问基类的保护成员B.派生类的成员函数可以访问基类的所有成员C.基类对象可以赋值给派生类对象D.如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类9.在 C+语言中,main 函数默认返回一个 _ 类型的值。(分数:1.00)A.intB.floatC.charD.void10.下列描述中,错误的是_。(分数:2.00)A.公有继承时基类中的公有成员在派生类中仍是公有成员B.公有继承时基类中的
4、保护成员在派生类中仍是保护成员C.保护继承时基类中的公有成员在派生类中仍是公有成员D.保护继承时基类中的保护成员在派生类中仍是保护成员11.在 E-R 图中,用来表示实体联系的图形是_。(分数:1.00)A.椭圆形B.矩形C.菱形D.三角形12.定义无符号整数类为 UInt,下面可以作为类 UInt 实例化值的是_。(分数:2.50)A.-369B.369C.0.369D.整数集合1, 2, 3, 4, 513.下列关于类和对象的叙述中,错误的是 _ 。(分数:2.00)A.一个类只能有一个对象B.对象是类的具体实例C.类是对某一类对象的抽象D.类和对象的关系是一种数据类型与变量的关系14.有
5、如下程序: #includeiostream using namespace std; class MyClass public: MyClass(int i=0)cout1;) MyClass(const MyClass) MyClassreturn*this; MyClass()cout4;) ; int main() MyClass obj1(1),obj2(2),obj3(obj1); return 0; 运行时的输出结果是_。(分数:3.00)A.112444B.11114444C.121444D.1131444415.在计算机中,算法是指(分数:1.00)A.加工方法B.解题方案的
6、准确而完整的描述C.排序方法D.查询方法16.对软件的特点,下面描述正确的是_。(分数:2.50)A.软件是一种物理实体B.软件在运行使用期间不存在老化问题C.软件开发、运行对计算机没有依赖性,不受计算机系统的限制D.软件的生产有一个明显的制作过程17.下面的语句中错误的是 _ 。(分数:2.00)A.int a=5;int xa;B.constint a=5;int xa;C.int n=5;int *p=new intn;D.const int n=5;int *p=new inta;18.下列关于 C+流的描述中,错误的是_。(分数:2.50)A.cout“A“表达式可输出字符 AB.e
7、of()函数可以检测是否到达文件尾C.对磁盘文件进行流操作时,必须包含头文件 fstreamD.以 ios_base:out 模式打开的文件不存在时,将自动建立一个新文件19.下列关于 C+流的描述中,错误的是 _ ,(分数:2.50)A.cout“A“表达式中输出字符 AB.eof 函数可以检测是否到达文件尾C.对磁盘文件进行流操作时,必须包含头文件 fstreamD.以 ios_base:out 模式打开的文件不存在时,将自动建立一个新文件20.当使用 fstream 流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为 _ 。(分数:1.00)A.ios:inB.ios: out
8、C.ios:in lios:outD.以上都不对21.下面对对象概念描述错误的是_。(分数:1.00)A.任何对象都必须有继承性B.对象是属性和方法的封装体C.对象间的通讯靠消息传递D.操作是对象的动态性属性22.定义如下变量:char one_char;,则语句 coutone_char;显示结果相当于 C 语言中的 _ 语句。(分数:2.00)A.printf(one_char);B.prinff(“%c“,one_char);C.scanf(one_char);D.scanf(“%c“,B.const int a=10;C.const int*point=0;D.const int*po
9、int=new int(10);24.下面关于运算符重载的描述错误的是_。(分数:2.50)A.运算符重载不能改变操作数的个数、运算符的优先级、运算符的结合性和运算符的语法结构B.不是所有的运算符都可以进行重载C.运算符函数的调用必须使用关键字 operatorD.在 C+语言中不可通过运算符重载创造出新的运算符25.堆栈 s 进行下列操作:push(1);push(2);pop();pop();后,此时的栈顶元素为 _ 。(分数:1.00)A.1B.2C.0D.不确定26.一个满二叉树其深度为 4,则其叶子节点的个数为 _ 。(分数:1.00)A.8B.16C.32D.427.下面是一个模板
10、声明的开始部分: templutetypename Tdouble_ 由此可知_。(分数:2.00)A.这可能是一个函数模板的声明B.这可能是一个类模板的声明C.这既可能是一个函数模板的声明,也可能是一个类模板的声明D.这肯定是一个错误的模板声明28.有如下程序: #includeiostream using namespace std; class A public: A()cout“A“; ; class Bpublic:B()cout“B“; class C:public A B b; public: C()cout“C“; ; int main()C obj;return 0; 执行后
11、的输出结果是_。(分数:2.50)A.ABCB.BACC.ACBD.CBA29.下列语句中,错误的是(分数:2.00)A.const int buffei=256;B.const double*point;C.int const buffer=256;D.double*const point:;30.若在表达式 y/x 中,“/“是作为成员函数重载的运算符,则该表达式还可以表示为_。(分数:2.00)A.operator/(y)B.operator/(x,y)C.operator/(x)D.operator/(y,x)31.有两个关系 R 和 S 如下: (分数:2.50)A.选择B.投影C.
12、自然连接D并32.对下列二叉树 (分数:1.00)A.ACBDFEGB.ACBDFGEC.ABDCGEFD.FCADBEG33.在 C+语言中函数返回值的类型是由_决定的。(分数:1.00)A.调用该函数时系统临时B.return 语句中的表达式类型C.定义该函数时所指定的函数类型D.调用该函数时的主调函数类型34.已知枚举类型定义语句为 enum TokenNAME,NUMBER,PLUS=5,MINUS,PRINT=10; 则下列叙述中错误的是_。(分数:1.00)A.枚举常量 NAME 的值为 1B.枚举常量 NUMBER 的值为 1C.枚举常量 MINUS 的值为 6D.枚举常量 PR
13、INT 的值为 1035.下列控制格式输入/输出的操作符中,能够设置浮点数精度的是_。(分数:1.00)A.setprecisionB.setwC.setfillD.showpoint36.已知一函数的形参说明为 int arr56,则与此等效的形参说明为(分数:2.00)A.int arrB.int5C.int*a6D.int(*a)637.对于 switch(c) 中的变量 c 不能定义为的类型是 _ 。(分数:1.00)A.unsignedB.intC.charD.float38.下列选项中不全是 C+语言关键字的是(分数:2.00)A.const,break,defaultB.long
14、,void,usingC.virtual,exterm,includeD.try,throw,this二级 C+-223 答案解析(总分:70.00,做题时间:90 分钟)一、选择题(总题数:38,分数:70.00)1.若一个函数的原型为“int * Xfun1(int x.int”,则该函数的返回值类型为_。(分数:2.50)A.int* B.intC.int 在下列对 func 的调用中,错误的是_。(分数:2.00)A.func(3,5);B.func(3.0,5.5);C.func(3,5.5); D.funcint(3,5.5);解析:解析 此题考查的是函数模板的使用。引用模板函数和
15、引用一般函数在语法形式上基本相同。需要注意的是说明一个函数模板后,当编译系统发现有一个对应的函数调用时,将根据实参中的类型来确认是否匹配函数模板中的对应形参。本题 C 选项中,编译系统从第一个参数“3”获得信息“int”和从第二个参数获得信息“double”两者矛盾,错误;A、B 选项正确;D 选项中,函数名后的int是模板实参表,编译系统会将 double 型的形参“5.5”自动转化成 int 类型。4.下列关于 this 指针的叙述中正确的是_。(分数:1.00)A.任何与类相关的函数都有 this 指针B.类的成员函数都有 this 指针C.类的友元函数都有 this 指针D.类的非静态
16、成员函数才有 this 指针 解析:解析 本题考查 this 指针的使用。类的每一个成员函数都有一个隐含的常量指针,即 this 指针。类的静态成员函数不能含有 this 指针,因为 this 指针是一个指向本对象的指针。5.结构化分析方法是面向 _ 的自顶向下、逐步求精进行需求分析的方法。(分数:2.00)A.对象B.数据结构C.数据流 D.目标解析:解析 结构化分析方法是面向数据流进行需求分析的方法,采用自顶向下、逐步求精,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。6.在 C+中既可以用于文件输入又可以用于文件输出的流类是_。(分数:2.50)A.fstrea
17、m B.ifstreamC.ofstreamD.iostream解析:7.计算斐波那契数列第 n 项的函数定义如下: int fib(int n) if(n=0) return 1; else if(n=1) return 2; else return fib(n-1)+fib(n-2); 若执行函数调用表达式 fib(2),函数 fib 被调用的次数是_。(分数:2.50)A.1B.2C.3 D.4解析:解析 针对递归调用的含义。当 n 为 2 时有 fib(0),fib(1)fib(2)被调用,且 fib(0),fib(1)时调用结束,即共 3 次。8.下列有关继承和派生的叙述中,正确的是
18、_。(分数:3.00)A.如果一个派生类私有继承其基类,则该派生类对象不能访问基类的保护成员B.派生类的成员函数可以访问基类的所有成员C.基类对象可以赋值给派生类对象D.如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类 解析:解析 此题考查的是继承和派生。无论是哪种继承方式,派生类都能够访问基类的公有和保护成员,而不能访问基类的私有成员,故选项 A 和 B 错误;公有继承时,基类的对象不可作为派生类的对象处理,即基类对象不可赋值给派生类对象,所以选项 C 错误。9.在 C+语言中,main 函数默认返回一个 _ 类型的值。(分数:1.00)A.int B.floatC.charD.
19、void解析:10.下列描述中,错误的是_。(分数:2.00)A.公有继承时基类中的公有成员在派生类中仍是公有成员B.公有继承时基类中的保护成员在派生类中仍是保护成员C.保护继承时基类中的公有成员在派生类中仍是公有成员 D.保护继承时基类中的保护成员在派生类中仍是保护成员解析:解析 保护继承时基类中的公有成员在派生类中是保护成员。11.在 E-R 图中,用来表示实体联系的图形是_。(分数:1.00)A.椭圆形B.矩形C.菱形 D.三角形解析:解析 在 E-R 图中实体集用矩形,属性用椭圆,联系用菱形。12.定义无符号整数类为 UInt,下面可以作为类 UInt 实例化值的是_。(分数:2.50
20、)A.-369B.369 C.0.369D.整数集合1, 2, 3, 4, 5解析:解析 本题考查的知识点是无符号整数。这种类型不存放负值,且如果一个表达式中同时出现普通的整数和无符号类型的整数,普通的整数就会被转换成无符号类型。13.下列关于类和对象的叙述中,错误的是 _ 。(分数:2.00)A.一个类只能有一个对象 B.对象是类的具体实例C.类是对某一类对象的抽象D.类和对象的关系是一种数据类型与变量的关系解析:解析 此题考查的是类和对象的相关概念。类是将不同的数据和与这些数据相关的操作封装起来装在一起的集合体。对象是类的具体实例,也即类是对某一类对象的抽象,类和对象之间可以说是数据类型与
21、变量的关系。一个类可以有无数个对象。14.有如下程序: #includeiostream using namespace std; class MyClass public: MyClass(int i=0)cout1;) MyClass(const MyClass) MyClassreturn*this; MyClass()cout4;) ; int main() MyClass obj1(1),obj2(2),obj3(obj1); return 0; 运行时的输出结果是_。(分数:3.00)A.112444 B.11114444C.121444D.11314444解析:解析 当创建 My
22、Class 类对象 obj1(1)和 obj2(2)时候,调用类构造函数会输出两个 1,然后创建类对象 obj3(obj(1)时,会调用拷贝类构造函数,输出一个 2,然后当 main 函数结束时候,调用三个对象的析构函数会输出三个 4。15.在计算机中,算法是指(分数:1.00)A.加工方法B.解题方案的准确而完整的描述 C.排序方法D.查询方法解析:解析 计算机算法是指解题方案的准确而完整的描述,它有以下几个基本特征:可行性、确定性、有穷性和拥有足够的情报。16.对软件的特点,下面描述正确的是_。(分数:2.50)A.软件是一种物理实体B.软件在运行使用期间不存在老化问题 C.软件开发、运行
23、对计算机没有依赖性,不受计算机系统的限制D.软件的生产有一个明显的制作过程解析:解析 软件在运行期间不会因为介质的磨损而老化,只可能因为适应硬件环境以及需求变化进行修改而引入错误,导致失效率升高从而软件退化。17.下面的语句中错误的是 _ 。(分数:2.00)A.int a=5;int xa; B.constint a=5;int xa;C.int n=5;int *p=new intn;D.const int n=5;int *p=new inta;解析:18.下列关于 C+流的描述中,错误的是_。(分数:2.50)A.cout“A“表达式可输出字符 A B.eof()函数可以检测是否到达文
24、件尾C.对磁盘文件进行流操作时,必须包含头文件 fstreamD.以 ios_base:out 模式打开的文件不存在时,将自动建立一个新文件解析:19.下列关于 C+流的描述中,错误的是 _ ,(分数:2.50)A.cout“A“表达式中输出字符 A B.eof 函数可以检测是否到达文件尾C.对磁盘文件进行流操作时,必须包含头文件 fstreamD.以 ios_base:out 模式打开的文件不存在时,将自动建立一个新文件解析:解析 在 C+中输入用“cin”,输出用“cout”。20.当使用 fstream 流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为 _ 。(分数:1.00
25、)A.ios:inB.ios: outC.ios:in lios:outD.以上都不对 解析:21.下面对对象概念描述错误的是_。(分数:1.00)A.任何对象都必须有继承性 B.对象是属性和方法的封装体C.对象间的通讯靠消息传递D.操作是对象的动态性属性解析:解析 由题意可知,对对象概念描述错误的是选项 A。22.定义如下变量:char one_char;,则语句 coutone_char;显示结果相当于 C 语言中的 _ 语句。(分数:2.00)A.printf(one_char);B.prinff(“%c“,one_char); C.scanf(one_char);D.scanf(“%c
26、“, B.const int a=10;C.const int*point=0;D.const int*point=new int(10);解析:解析 由关键字 const 声明符号常量的同时必须为其赋初值。24.下面关于运算符重载的描述错误的是_。(分数:2.50)A.运算符重载不能改变操作数的个数、运算符的优先级、运算符的结合性和运算符的语法结构B.不是所有的运算符都可以进行重载C.运算符函数的调用必须使用关键字 operator D.在 C+语言中不可通过运算符重载创造出新的运算符解析:解析 例如“:”运算符就不能被重载;通过重载可以创造新的运算方式,但是不能臆造新的运算符;定义的时候必
27、须使用关键字 operator,而调用时可直接使用运算符。25.堆栈 s 进行下列操作:push(1);push(2);pop();pop();后,此时的栈顶元素为 _ 。(分数:1.00)A.1B.2C.0D.不确定 解析:解析 对栈 s 进行两次 push 操作后,又进行了两次 pop 操作,即刚才压入的数已经弹出,此时的栈顶元素为不确定。26.一个满二叉树其深度为 4,则其叶子节点的个数为 _ 。(分数:1.00)A.8 B.16C.32D.4解析:解析 若深度为 k,则叶子节点的个数为 2k-1,这是满二叉树的性质之一。27.下面是一个模板声明的开始部分: templutetypena
28、me Tdouble_ 由此可知_。(分数:2.00)A.这可能是一个函数模板的声明 B.这可能是一个类模板的声明C.这既可能是一个函数模板的声明,也可能是一个类模板的声明D.这肯定是一个错误的模板声明解析:解析 此题考查的是函数模板的声明。声明一个函数模板的格式是:template模板形参表声明函数声明;定义类模板的格式是:template类型形参表class类模板名;。28.有如下程序: #includeiostream using namespace std; class A public: A()cout“A“; ; class Bpublic:B()cout“B“; class C:
29、public A B b; public: C()cout“C“; ; int main()C obj;return 0; 执行后的输出结果是_。(分数:2.50)A.ABC B.BACC.ACBD.CBA解析:解析 C+程序中的执行子类,首先执行基类的构造函数,然后执行数据成员类的构造函数,最后执行子类本身的构造函数,所以输出结果为 ABC。29.下列语句中,错误的是(分数:2.00)A.const int buffei=256;B.const double*point; C.int const buffer=256;D.double*const point:;解析:解析 定义常变量的一般形
30、式为: const 类型名变量名=初始值 定义常指针的一般形式为: const 类型名*变量名=初始值 或者为: 类型名*const 变量名=初始值30.若在表达式 y/x 中,“/“是作为成员函数重载的运算符,则该表达式还可以表示为_。(分数:2.00)A.operator/(y)B.operator/(x,y)C.operator/(x) D.operator/(y,x)解析:解析 运算符函数的函数名是由运算符前加关键字 operator 构成的。所以当“/”作为运算符重载后,其格式为 operator/。所以其作为成员函数调用时的格式为 y.operator/(x)。31.有两个关系 R
31、 和 S 如下: (分数:2.50)A.选择 B.投影C.自然连接D并解析:解析 由关系 R 得到关系 S 是一个一元运算,而自然连接和并都是多元运算可以排除选项 C 和选项 D。关系 S 是由关系 R 的第 3 个元组组成,很显然这是对关系 R 进行选择运算的结果。投影运算则是要从关系 R 中选择某些列。可以简单地理解,选择运算是对行的操作,投影运算是对列的操作。32.对下列二叉树 (分数:1.00)A.ACBDFEG B.ACBDFGEC.ABDCGEFD.FCADBEG解析:解析 二叉树的遍历有三种:前序、中序和后序。中序遍历首先遍历左子树或左子结点,然后访问根结点,最后遍历右子树或右子
32、结点,分析本题二叉树,对其进行中序遍历,结果为 ACBDFEG。33.在 C+语言中函数返回值的类型是由_决定的。(分数:1.00)A.调用该函数时系统临时B.return 语句中的表达式类型C.定义该函数时所指定的函数类型 D.调用该函数时的主调函数类型解析:解析 函数类型决定了函数返回值的类型。函数值返回类型可以由编译器自动完成类型转换。在函数有返回值的调用中,编译器将 return 后面的表达式的类型强制转换为该函数定义时指定的返回值类型。34.已知枚举类型定义语句为 enum TokenNAME,NUMBER,PLUS=5,MINUS,PRINT=10; 则下列叙述中错误的是_。(分数
33、:1.00)A.枚举常量 NAME 的值为 1 B.枚举常量 NUMBER 的值为 1C.枚举常量 MINUS 的值为 6D.枚举常量 PRINT 的值为 10解析:解析 本题考查 C+语言的数据类型。第一个枚举常量的值为 0;允许程序显示的定义中指定部分或全部枚举常量的值,枚举常量默认时,在前一枚举常量值的基础上以此增 1。35.下列控制格式输入/输出的操作符中,能够设置浮点数精度的是_。(分数:1.00)A.setprecision B.setwC.setfillD.showpoint解析:解析 iomanip 中定义的操纵符包括:setfill(ch)用 ch 填充空白、setpreci
34、sion(n)将浮点精度置为 n、setw(w)、读写 w 个字符的值 showpoint 设置小数点。36.已知一函数的形参说明为 int arr56,则与此等效的形参说明为(分数:2.00)A.int arrB.int5C.int*a6D.int(*a)6 解析:解析 二维数组可以看作是一维数组的扩展。选项 D 表示的是一个一维数组,里面每个元素是一个指针,而指针肯定指向某个地址,从而完成二维数组的扩展。考生要注意选项 C 中*和的运算优先级。37.对于 switch(c) 中的变量 c 不能定义为的类型是 _ 。(分数:1.00)A.unsignedB.intC.charD.float 解析:解析 选择语句 switch(c)中的 c 必须属于整型、字符型或枚举型。所以答案为 D。38.下列选项中不全是 C+语言关键字的是(分数:2.00)A.const,break,defaultB.long,void,usingC.virtual,exterm,include D.try,throw,this解析:
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1