二级C++62.docx
《二级C++62.docx》由会员分享,可在线阅读,更多相关《二级C++62.docx(26页珍藏版)》请在冰点文库上搜索。
二级C++62
二级C++-6-2
(总分:
77.00,做题时间:
90分钟)
一、{{B}}选择题{{/B}}(总题数:
35,分数:
52.00)
1.设置虚基类的目的是{{U}}{{/U}}。
∙A.简化程序
∙B.消除二义性
∙C.提高运行效率
∙D.减少目标代码行
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]设置虚基类的目的是为了消除二义性。
2.算法的空间复杂度是指{{U}}{{/U}}。
∙A.算法程序的长度
∙B.算法程序中的指令条数
∙C.算法程序所占的存储空间
∙D.算法执行过程中所需要的存储空间
(分数:
1.00)
A.
B.
C.
D. √
解析:
[解析]本题考查算法的空间复杂度,是重点之一。
算法的空间复杂度一般是指这个算法执行时所需要的内存空间,其中包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间,其中额外空间还包括算法程序执行过程的工作单元以及某种数据结构所需要的附加存储空间。
3.关于函数中的<返回类型>,下列表述中错误的是{{U}}{{/U}}。
∙A.<返回类型>中有可能包含关键字int
∙B.<返回类型>中有可能包含自定义标识符
∙C.<返回类型>中有可能包含字符*
∙D.<返回类型>中可能包含口
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]<返回类型>又称函数类型,表示一个函数所计算(或运行)的结果值类型,这里的类型可以是预定义类型(如int)、复合类型(如double*)、用户定义类型(如枚举类),若返回值只做更新(或设置)等操作,则该函数返回类型为void类型,函数类型和内置数组不能作为返回类型,但类类型和容器类型可以被直接返回。
4.下列程序执行结果是
#include<iostream.h>
classA
{public:
inta;
A():
a(10){tout<<a<<endl;}
};
voidmain()
{Aobj1;
Aobj2(obj1);
cout<<""<<obj2.a<<endl;
}
∙A.1010
∙B.编译错误缺少拷贝构造函数
∙C.10随机数
∙D.随机数随机数
(分数:
2.00)
A. √
B.
C.
D.
解析:
[解析]本题考察拷贝构造函数的知识。
如果类中没有实现拷贝构造函数,则编译器会为其自动生成一个。
对于本题这种简单对象,默认生成的拷贝构造函数可以完成数据成员的自动赋值,对于复杂对象,则可能需要显式定义拷贝构造函数。
5.数据库设计中,用E-R图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的{{U}}{{/U}}。
∙A.需求分析阶段
∙B.逻辑设计阶段
∙C.概念设计阶段
∙D.物理没计阶段
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]E-R图为实体一联系图,提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。
6.数据库管理系统DBMS中用来定义模式、内模式和外模式的语言为
∙A.C
∙B.Basic
∙C.DDL
∙D.DML
(分数:
1.00)
A.
B.
C. √
D.
解析:
解析:
选项A)、选项B)显然不合题意。
数据定义语言(DataDefinitionLanguage,简称DDL)负责数据的模式定义与数据的物理存取构建;数据操纵语言(DataManipulationlanguage,简称DML)负责数据的操纵,包括查询及增、删、改等操作。
7.以下哪个不是C++语言中的有效标识符?
∙A.34a
∙B._AB
∙C.A_B
∙D.A25
(分数:
2.00)
A. √
B.
C.
D.
解析:
[解析]考查C++语言标识符规则。
[解题要点]在C++语言中,标识符只能由数字、字母、下画线组成,并且第一个字符不能是数字。
[错解分析]选项A)是以数字开始的。
[考点链接]关键字不能用做标识符。
8.关于构造函数A()的拷贝构造函数正确的是
∙A.A(A*B);
∙B.A(AB);
∙C.A(A&B);
∙D.A(A);
(分数:
1.00)
A.
B.
C. √
D.
解析:
[解析]考查拷贝构造函数的方法。
[解题要点]固定的一种拷贝方式就是<类名>:
<类名>const<类名>&<引用对象名>[考点链接]如果一个类中没有声明,拷贝构造函数,编译器会自动生成一个如上述形成的仅有的拷贝构造函数。
9.有如下程序:
#include<iostream.h>
usingnamespacestd;
classBase
{
public:
Base(){cout<<"BB";f();}
voidf(){cout<<"BF";}
};
classDerived:
publicBase
{
public:
Derived(){cout<<"DD";}
voidf(){cout<<"Df";}
};
intmain(){Derivedd;return0;}
执行上面的程序将输出______。
∙A.BBBfDD
∙B.BBDfDDDf
∙C.DD
∙D.DDBBBf
(分数:
1.00)
A. √
B.
C.
D.
解析:
[解析]本题考查类的继承和派生。
派生类执行构造函故的一般次序为:
首先调用基类构造函数;然后调用成员对象的构造函数;最后是派生类构造函数中的内容。
题目中定义派生类对象d时,先调用基类Base的构造函数,输出BBBf,然后调用派生类Derived的构造函数,输出DD。
10.有如下函数模板定义:
template<typenameT1,typenameT2>
T1FUN(T2n){returnn*5,0;}
若要求以int型数据9作为函数实参调用该模板,并返回一个double型数据,则该调用应表示为______。
∙A.FUN(9)
∙B.FUN<9>
∙C.FUN<double>(9)
∙D.FUN<9>(double)
(分数:
1.00)
A.
B.
C. √
D.
解析:
[解析]函数返回类型是double型,则T1为double型,T2为int型才符合函数模板的定义。
11.下面关于对象概念的描述中,{{U}}{{/U}}是错误的。
∙A.对象就是C语言中的结构体变量
∙B.对象代表着正在创建的系统中的一个实体
∙C.对象是一个状态和操作(或方法)的封装体
∙D.对象之间的信息传递是通过消息进行的
(分数:
1.00)
A. √
B.
C.
D.
解析:
12.下面对静态数据成员的描述中,正确的是{{U}}{{/U}}。
∙A.静态数据成员可以在类体内进行初始化
∙B.静态数据成员不可以通过类的对象调用
∙C.静态数据成员不能受private(私有)控制符的作用
∙D.静态数据成员可以直接通过类名调用
(分数:
1.00)
A.
B.
C.
D. √
解析:
[解析]对于选项A,C++规定对静态数据成员的初始化应该在类体外进行初始化。
所以选项A是错误的。
对于B选项,C++规定静态数据成员可由任意访问权限许可的函数或对象访问,所以选项B是错误的。
对于选项C,在C++中,静态数据成员也可以定义为私有的静态数据成员,所以选项C的描述是错误的。
对于选项D,在C++中,静态数据成员是类的所有对象共享的成员,即可以通过类名访问,也可以通过对象访问。
但通过类名访问更方便、更高效。
所以选项D的描述是正确的。
13.下列程序的运行结果为{{U}}{{/U}}。
#include<iostream.h>
template<classTT>
classFF
{TTa1,a2,a3;
public:
FF(TTb1,TTb2,TTb3){a1=b1;a2=b2;a3=b3;}
TTSum(){returna1+a2+a3;}};
voidmain()
{FF<int>x(int(1.1),2,3),y(int(4.2),5,6);
cout<<x.Sum()<<‘‘<<y.Sum()<<endl;}
∙A.6.115.2
∙B.615
∙C.615.2
∙D.6.115
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]本题考查模板函数的应用,表达式int(1.1)和int(4.2)是将1.1和4.2强制转换为整型。
14.用链表表示线性表的优点是{{U}}{{/U}}。
∙A.便于随机存取
∙B.花费的存储空间较顺序存储少
∙C.便于插入和删除操作
∙D.数据元素的物理顺序和逻辑顺序相同
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]在链表中因为除了存放数据元素之外,还要存放指针,所以链表花费的存储空间比顺序表还要多。
在插入和删除数据元素时,只需要移动相应的记录指针即可。
在链表中,数据的物理结构与逻辑结构不一定相同,因为是靠指针来实现对数据的指定,所以不能进行随机存取。
15.在C++语言中,main函数默认返回一个{{U}}{{/U}}类型的值。
∙A.int
∙B.float
∙C.char
∙D.void
(分数:
1.00)
A. √
B.
C.
D.
解析:
16.下面程序错误的语句是
#include"iostream.h"
①voidmain()
②{
③intA=0;
④int&B;
⑤B=A;
⑥cout<<B;
⑦cout<<A;
⑧}
∙A.②
∙B.③
∙C.④
∙D.⑥
(分数:
1.00)
A.
B.
C. √
D.
解析:
[解析]考查引用的用法。
【解题要点】引用必须在第一时间进行赋值,int&B没有在第一时间赋值故错误。
【考点链接】引用的方式,引用和指针应用的比较。
17.具有3个结点的二叉树有
∙A.2种形态
∙B.4种形态
∙C.7种形态
∙D.5种形态
(分数:
1.00)
A.
B.
C.
D. √
解析:
[解析]考查二叉树的基础知识。
[解题要点]具有3个结点的二叉树具有以下的几种形态:
[*][考点链接]二叉树的结构及画法。
18.下列程序的输出结果为{{U}}{{/U}}。
#include<iostream.h>
#include<iomanip.h>
voidmain()
{
cout.precision(4);
cout<<123.127;
cout<<””<<123.46:
}
∙A.123.1123.4
∙B.123.1123.46
∙C.123.127123.46
∙D.123.1123.4
(分数:
1.00)
A. √
B.
C.
D.
解析:
19.数据流程图(DFD图)是{{U}}{{/U}}。
∙A.软件概要设计的工具
∙B.软件详细设计的工具
∙C.结构化方法的需求分析工具
∙D.面向对象方法的需求分析工具
(分数:
2.00)
A.
B.
C.
D. √
解析:
[解析]数据流程图是一种结构化分析描述模型,用来对系统的功能需求进行建模。
20.下面叙述错误的是{{U}}{{/U}}。
∙A.对基类成员的访问能力在private派生类中和public派生类中是相同的
∙B.基类的private成员在public派生类中不可访问
∙C.基类中的public成员在protected派生类中是protected的
∙D.基类中的public成员在protected派生类中仍然是public的
(分数:
2.00)
A.
B.
C.
D. √
解析:
[解析]基类的公有成员和保护成员在保护派生类中都成了保护成员,其私有成员仍为基类私有。
21.下面有关重载函数的说法中,正确的是{{U}}{{/U}}。
∙A.重载函数必须具有不同的返回值类型
∙B.重载函数形参个数必须不同
∙C.重载函数必须有不同的形参列表
∙D.重载函数名可以不同
(分数:
1.00)
A.
B.
C. √
D.
解析:
[解析]函数重载允许用同一个函数名定义多个函数。
被重载的函数必须要有不同的形参列表。
不可以根据函数返回值类型来重载函数。
22.若有如下程序:
#include<iostream>
usingnamespaeestd;
intfun()
{
staticinti=0;
ints=1;
s+=i;
i++;
returns;
}
intmain()
{
inti,a=0;
for(i=0;i<5;i++)
a+=fun();
cout<<a<<end1;
return0;
}
程序运行后,输出的结果是{{U}}{{/U}}。
∙A.20
∙B.24
∙C.25
∙D.15
(分数:
2.00)
A.
B.
C.
D. √
解析:
[解析]由主函数入手,在for循环中调用fun函数,其中调用次数为5次。
fun中i为静态变量,有效到文件结束。
第一次调用fun后为s=1,a=1;第二次调用后s=2,a=3;第三次s=3,a=6;第四次s=4,a=10;第五次s=5,a=15。
23.假定MyClass为一个类,则该类的拷贝构造函数的声明语句为()。
∙A.MyClass&(MyClassx);
∙B.MyClass(MyClassx)
∙C.MyClass(MyClass&x);
∙D.MyClass(MyClass*x)
(分数:
1.00)
A.
B.
C. √
D.
解析:
24.已知inta,*pa=&a:
输出指针pa十进制的地址值的方法是{{U}}{{/U}}。
∙A.cout<<pa;
∙B.cout<<*p;
∙C.cout<<&pa;
∙D.cout<<long(pa);
(分数:
1.00)
A.
B.
C.
D. √
解析:
25.已知各变量的定义如下
inti=8,k,a,b;
unsignedlongw=5;
doublex=1.42,y=5.2;
则以下符合C++语言语法的表达式是{{U}}{{/U}}。
∙A.a+=a-=(b=4)*(a=3)
∙B.a=a*3+2
∙C.x%(-3)
∙D.y=floati
(分数:
2.00)
A. √
B.
C.
D.
解析:
26.在计算机中,算法是指
∙A.加工方法
∙B.解题方案的准确而完整的描述
∙C.排序方法
∙D.查询方法
(分数:
1.00)
A.
B. √
C.
D.
解析:
[解析]计算机算法是指解题方案的准确而完整的描述,它有以下几个基本特征:
可行性、确定性、有穷性和拥有足够的情报。
27.下面不属于同一函数模板的是{{U}}{{/U}}。
∙A.template<classt1>t1max(t1&a,t1&b){…}template<classt2>t2max(t2&a,t2&b){…}
∙B.template<classt1>t1max(t1a,t1b){…}template<classt2>t2max(t2&a,t2&b){…}
∙C.template<classt1>t1max(t1*a,t1*b){…}template<classt2>t2max(t2&a,t2&b){…}
∙D.template<classt1>t1max(t1a,t1b){…}template<classt2>t2max(t2&a,t2&b,t2c){…}
(分数:
2.00)
A.
B.
C.
D. √
解析:
[解析]函数模板的重载是靠模板参数的数量不同来区分的,因为函数模板是抽象的,有待于进一步实例化,所以靠参数类型无法区别调用哪个函数模板。
28.下面程序的功能是将从键盘输入的一对数,由小到大排序输出,当输入一对相等数时结束循环,在划线处应填入的选项是
#include<iostream.h>
voidmain()
{inta,b,t;
cin>>a>>b;f
while(______)
{if(a>b)
{t=a;a=b;b=t;}
cout<<a<<""<<b<<end1;
cin>>a>>b;
}}
∙A.!
a=b
∙B.a!
=b
∙C.a==b
∙D.a=b
(分数:
1.00)
A.
B. √
C.
D.
解析:
[解析]根据本题提出的条件可知,控制循环的表达式应该是所输入的两数互不相等,也即只有满足这一条件时,两数才能进行排序输出的操作,由此得出循环的控制表达式应该为a!
=b。
29.从用户角度看,下面列出的条目中{{U}}{{/U}}是数据库管理系统应具有的目标。
Ⅰ用户界面友好Ⅱ内部结构清晰、层次分明
Ⅲ开放性,即符合标准和规范Ⅳ负责管理企业组织的数据库资源
∙A.Ⅰ、Ⅱ
∙B.Ⅰ、Ⅱ、Ⅲ
∙C.Ⅲ、Ⅳ
∙D.都是
(分数:
2.00)
A.
B. √
C.
D.
解析:
30.下列关于派生类构造函数和析构函数的说法中,错误的是
∙A.派生类的构造函数会隐含调用基类的构造函数
∙B.如果基类中没有缺省构造函数,那么派生类必须定义构造函数
∙C.在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数
∙D.在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数
(分数:
2.00)
A.
B.
C.
D. √
解析:
[解析]本题考查的知识点是;派生类的构造函数和析构函数。
在销毁派生类对象时,析构函数的执行;过程与构造函数严格相反,即;
(1)对派生类新增普通成员进行清理;
(2)调用成员对象析构函数,对派生类新增的成员对象进行清理;(3)调用基类析构函数,对基类进行清理。
故本题应该选择D。
31.关于二义性的描述错误的是{{U}}{{/U}}。
∙A.一个子类的两个父类中都有某个同名成员,在子类中对该成员访问可能出现二义性
∙B.解决二义性可以用对成员名的限定法
∙C.父类和子类中同时出现同名函数,也可能存在二义性
∙D.一个子类是从两个父类派生出来的,而这两个父类只有一个共同的父类,对该父类成员进行访问时,可能出现二义性
(分数:
2.00)
A.
B.
C. √
D.
解析:
32.数据结构中,与所使用的计算机无关的是数据的
∙A.存储结构
∙B.物理结构
∙C.逻辑结构
∙D.物理和存储结构
(分数:
1.00)
A.
B.
C. √
D.
解析:
[解析]数据结构概念一般包括3个方面的内容,数据的逻辑结构、存储结构及数据上的运算集合。
数据的逻辑结构只抽象的反映数据元素之间的逻辑关系,而不管它在计算机中的存储表示形式。
33.执行语句序列
ofstreamoutfile("data.dat");
if(…)cout<<"ok";elsecout<<"fail";后,如果文件打开成功,显示“ok”,否则显示“fail”。
由此可知,上面if语句的“…”处的表达式是{{U}}{{/U}}。
∙A.outfile.fail()或outfile
∙B.outfile.good()或!
outfile
∙C.outfile.good()或outfile
∙D.outfile.fail()或!
outfile
(分数:
2.00)
A.
B.
C. √
D.
解析:
34.数据库、数据库系统和数据库管理系统之间的关系是{{U}}{{/U}}。
∙A.数据库包括数据库系统和数据库管理系统
∙B.数据库系统包括数据库和数据库管理系统
∙C.数据库管理系统包括数据库和数据库系统
∙D.3者没有明显的包含关系
(分数:
1.00)
A.
B. √
C.
D.
解析:
35.在深度为5的满二叉树中,叶子节点的个数为
∙A.32
∙B.31
∙C.16
∙D.15
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]所谓满二叉树是指这样的一种二叉树:
除最后一层外,每一层上的所有节点都有两个叶子节点。
这就是说,在满二叉树中,层上的节点数都达到最大值,即在满二叉树的第k层上有2k-1个节点,且深度为m的满二叉树有2m-1个节点。
二、{{B}}填空题{{/B}}(总题数:
15,分数:
25.00)
36.若要访问指针变量p所指向的数据,应使用表达式1。
(分数:
2.00)
填空项1:
__________________ (正确答案:
*p)
解析:
[解析]此题考查的是指针。
指针使用两种特殊的运算符:
*和&。
&用于返回其操作对象的内存地址;*用于返回其操作数所指对象的值。
37.目前,有两种重要的高级语言,分别是结构化程序和1。
(分数:
2.00)
填空项1:
__________________ (正确答案:
面向对象程序设计)
解析:
38.数据结构分为逻辑结构与存储结构,线性链表属于{{U}}{{U}}{{/U}}{{/U}}。
(分数:
1.00)
填空项1:
__________________ (正确答案:
存储结构)
解析:
[解析]数据的逻辑结构是指反映数据元素之间逻辑关系的数据结构;数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式。
在数据的存储结构中,不仅要存放各数据元素的信息,还需要存放各数据元素之间的前后件关系的信息。
39.有以下程序:
#include<iostream>usingnamespacestd;classMyClass{p