二级C++208Word格式文档下载.docx
- 文档编号:17016728
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:17
- 大小:25.34KB
二级C++208Word格式文档下载.docx
《二级C++208Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《二级C++208Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。
C(n){cout<<2;
};
classTW0{
ONEonel;
ONEone2;
TWO(intm):
one2(m){eout<<3;
intmain(){
TWOt(4);
return0;
}
2.00)
A.3
B.23
C.123
D.213
[解析]派生类中含有对象时构造函数的调用顺序是:
则先执行基类的构造函数,然后执行对象成员的构造函数,最后执行派生类的构造函数。
析构函数的调用次序与构造函数的次序则相反。
所以在创建对象t4.时,先调用基类无参构造函数0NE():
c(0),打印1:
然后调用对象one2(m)的构造函数ONE(intn):
c(n),打印2;
最后调用派生类的构造函数TWO(intm),打印3。
3.判断字符型变量ch是否为大写英文字母,应使用表达式______。
A.ch>="
A"
&
ch<="
Z"
B.ch<="
||ch>="
C."
<=ch<="
D.ch>="
4.有如下程序:
#include<iostream>
usingnamespaeestd;
classBasel
public:
Basel(intd){cout<<d;
}
~Basel(){}
classBase2
Base2(intd){cout<<d;
~Base2(){}
classDerived:
publicBase1,Base2
Derived(inta,intb,intc,intd):
Base1(b),Base2(a),b1(d),b2(e){}
private:
intb1;
intb2;
intmain()
Derivedd(1,2,3,4);
return0;
执行这个程序的输出记过是____。
A.1234
B.2134
C.12
D.21
[解析]本题考查派生类的构造函数和析构函数,在定义一个派生类的对象时,先调用基类的构造函数,然后再执行派生类的构造函数,对象释放时,先执行派生类的析构函数,再执行基类的析构函数。
本题中定义一个派生类对象时,分别调用基类的构造函数,所以分别输出21。
5.对下列二叉树
进行中序遍历的结果是____。
A.ACBDFEG
B.ACBDFGE
C.ABDCGEF
D.FCADBEG
6.若已经声明了函数原型“boolfun(boola,intb=0);
”,则下列重载函数声明中正确的是______。
A.boolfun(boola=true,intb=0);
B.intfun(boola,intB);
B.voidfun(doublea,int
C.;
D.voidfun(boola,intb=0);
[解析]本题考查函数重载相关知识,重载函数是函数的一种特殊情况,为方便使用,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个运算符完成不同的运算功能。
A、B、D选项的部分形参都与原函数相同,所以不能作为重载函数,选项C正确。
7.若MyClass为一个类,执行“MyClassa[4],*p[5];
”语句时会自动调用该类构造函数的次数是______。
A.2
B.5
C.4
D.9
[解析]语句MyClassa[4],*p[5]不仅定义了4个MyClass对象,分别为a[0],a[1],a[2],a[3],而且定义了5个指向MyClass对象的指针变量,分别为*p[0],*p[1],*p[2],*p[3],*p[4],所以共调用MyClass的构造函数4次。
8.假设函数fun已经定义,其原型为“voidfun(inta,intb=7,char*p="
*"
);
”下列函数调用中错误的是______。
A.fun(5)
B.fun(5,8)
C.fun(6,"
##"
)
D.fun(0,0,"
=="
)
[解析]根据函数fun()的定义,其前两个形参为整型变量,第三个形参为字符型变量。
所以在调用时,必须符合形参的数据类型,而选项C的第二个实参的数据类型为字符串,不符合第二个形参的数据类型。
9.有如下类声明:
classFoo{intbar;
则Foo类的成员bar是______。
A.公有数据成员
B.公有成员函数
C.私有数据成员
D.私有成员函数
[解析]此题考查的是类的定义。
在定义类的成员变量时,如果没有使用关键字;
所有成员默认定义为private私有权限。
10.包容类Contain和内嵌类Embed定义如下:
#include<iostream.h>
classContain
private:
intX;
protected:
intz;
classEmbed
inty;
Embed(){y=100;
intEmbed_Fun();
}MyEmbed;
intContain_Fun();
对上面的定义,正确的描述是____。
A.定义类Embed对象的语句是:
Contain?
Embedembed;
B.类Contain的成员函数Contain_Fun()中可以用MyEmbeD.y的方式访问类Embed的私有成员y
C.类Embed的成员函数Embed_Fun()中可以直接访问Contain的私有成员x
D.类Embed的成员函数Embed_Fun()中可以直接访问Contain的保护成员Z
11.有如下类定义:
classBag{
Bag(intp=200,chars="
M"
):
price(p),size(s){cout<<size;
intprice;
charsize;
若执行语句BagAlice,Kelly(Mice),*Twins[2],F4[4];
则输出结果为______。
A.MMMMMMMM
B.MMMMMM
C.MMMMM
D.MMMM
[解析]首先BagAlice语句,会调用默认构造函数Bag(intp=200,chars="
),输出size的值M;
接着BagKelly(Alice)语句会调用编译器生成的复制构造函数,完成初始化,复制构造函数只负责初始化成员变量,没有输出语句;
Bag*Twins[2]定义一个Bag*类型的数组,包含两个Bag*类型的元素,并不会构造Bag对象,没有输出;
而:
BagF4[4]定义了一个Bag类型的数组,包含4个Bag类型的元素,同时这4个元素会使用默认构造函数完成初始化,所以调用Bag(intp=200,chars="
),输出4个M。
综上,输出结果为MMMMM,答案为C选项。
12.下列关于模板的描述中,错误的是______。
A.类模板的成员函数都是模板函数
B.函数模板是一种参数化类型的函数
C.满足一定条件时可以省略模板实参
D.模板形参只能由关键字typename声明
[解析]template<typename(或class)数据类型参数标识符>。
13.从工程管理角度,软件设计一般分为两步完成,它们是____。
A.概要设计与详细设计
B.数据设计与接口设计
C.软件结构设计与数据设计
D.过程设计与数据设计
[解析]从软件工程角度看,软件设计分为概要设计和详细设计。
概要设计就是结构设计,其主要目标就是给出软件的模块结构i详细设计的首要任务就是设计模块的程序流程、算法和数据结构,次要任务就是设计数据库。
14.假定其中的x的单位是角度且不考虑丌的值的精度,则与数学公式
等价的C++语言表达式是______。
2.50)
A.sqrt(cos(x))
B.sqrt(abs(cos(x*3.14/180)))
C.sqrt(abs(cos(x*(/180)))
D.sqrt(fabs(cos(x*3.14/180)))
[解析]本题考查数学表达式的掌握,首先应转换为弧度,然后作为cos函数的参数求绝对值,最后是开方函数。
考生需要掌握的是常用的数学函数。
15.下列关于虚函数的说明中,正确的是______。
A.从虚基类继承的函数都是虚函数
B.虚函数不得是静态成员函数
C.只能通过指针或引用调用虚函数
D.抽象类中的成员函数都是虚函数
[解析]在某基类中声明为virtual并在一个或多个派生类中被重新定义的成员函数。
虚函数必须是基类的非静态成员函数,其访问权限可以是protected或public。
如果一个类包含了纯虚函数,称此类为抽象类。
所以本题答案为B。
16.有如下程序:
usingnamespacestd;
classA{
A(inti):
r1(i){}
voidprint(){cout<<"
E"
<<r1<<"
-"
;
voidprint()const{cout<<"
C"
<<r1*r1<<"
intr1;
intmain(){
Aa1
(2);
constAa2(4);
a1.print();
a2.print();
return0;
运行时的输出结果是______。
A.运行时出错
B.E2-C16-
C.C4-C16-
D.E2-E4-
[解析]类A包括一个整型数据成员r1,一个一般成员函数print(),一个常成员函数print()const。
在主函数中定义了对象a1,并对r1的值赋2和常对象a2,并对r1的值赋4,在C++中,常对象不能被更新,所以常对象只能调用类的常成员函数,而不能调用一般成员函数。
而一般的对象,既可以调用一般成员函数也可以调用常成员函数。
所以在本题中,当执行a1.print()时,输出为E2-,执行a2.print()时,输出为C16-。
17.下面程序的输出结果为____。
classTestClass
TestClass(){val++;
staticintval;
intTestClass:
:
val=0;
voidmain()
TestClasscs1;
cout<<cs1.val<<"
"
TestClasscs2;
TestClasscs3,cs4;
cout<<cs2.val<<endl;
A.03
B.13
C.14
D.24
[解析]由主函数main入手,定义TestClass类的对象cs1,执行cs1.val,其中val为静态变量,根据“intTestClass:
”初始化,TestClass中的TestClass(){val++;
}构造函数执行后,val值为1。
主函数中接着定义对象cs2,cs3,cs4。
执行“cout<<cs2.val<<endl;
”中的val值为4。
18.有3个关系R、S和T如下:
由关系R和S通过运算得到关系T,则所使用的运算为______。
A..并
B.自然连接
C.笛卡儿积
D..交
[解析]由题可知,T中的数据既在R中,也在S中,符合这个概念的是“交”运算,选项D正确。
19.已知在一个类体中包含如下函数原型:
VOLUMEOPERATOR-(VOLUME)const;
,下列关于这个函数的叙述中,错误的是______。
A.这是运算符一的重载运算符函数
B.这个函数所重载的运算符是一个一元运算符
C.这是一个成员函数
D.这个函数不改变类的任何数据成员的值
[解析]本题考核运算符的重载。
题中语句为运算符一这是一个二元运算符,且是作为常成员函数来重载的,所以它不能更新对象的数据成员,也不能调用该类中没有用const修饰的成员函数。
20.有如下程序:
voidf1(int&
x,int&
y){intz=x;
x=y;
y=z;
voidf2(intx,inty){intz=x;
intx=10,y=26;
f1(x,y);
f2(x,y);
cout<<y<<endl;
A.10
B.16
C.26
D.36
[解析]函数f1的参数传递方式采用传引用方式,调用函数f1后,实参变量x、y的值被交换。
此时,x=26,y=10。
函数f2的参数传递方式采用传值方式,调用函数f2后,不会改变实参变量x、y的值。
故程序输出y的值为10。
21.在软件设计中,不属于过程设计工具的是______。
A.PDL(过程设计语言)
B.PAD图
C.N-S图
D.DFD图
[解析]PDL是过程设计语言(ProcedureDesignLanguage)的简写,也称程序描述语言,是用于描述模块算法设计和处理细节的语言;
N-S图是编程过程中常用的一种分析工具,提出了最初分析问题方法;
PAD是问题分析图(ProblemAnalysisDiagram)的简写,它用二维树型结构的图表示程序的控制流,将这种图转换为程序代码比较容易;
DFD(数据流图)是描述数据处理过程的工具。
22.下列描述中正确的是______。
A.程序就是软件
B.软件开发不受计算机系统的限制
C.软件既是逻辑实体,又是物理实体
D.软件是程序、数据与相关文档的集合
[解析]软件与程序有区别,软件的相关概念。
23.下列叙述中,错误的是______。
A.false是一个逻辑型常量
B."
b"
是一个字符型常量
C.365是一个int常量
D.3.1415926是一个double常量
[解析]字符型常量用一对单引号括起来,用双引号括起来的是字符串常量。
故B错误。
24.下列程序执行后,输出的结果是______。
intx=-5,y=0;
while(++x)
y++;
A.1
B.2
D.5
[解析]循环条件是++x,在c++中,对于非0值全都为真,0代表假。
x的初始值为-5,所以循环能进行4次。
25.下列叙述中正确的是______。
A.算法就是程序
B.设计算法时只需要考虑数据结构的设计
C.设计算法时只需要考虑结果的可靠性
D.以上三种说法都不对
[解析]程序可以实现算法,所以A错。
设计算法除了考虑数据结构外,还需考虑结果的可靠性,以及算法效率,等等。
26.下列叙述中错误的是____。
A.一个函数中可以有多条return语句
B.调用函数必须在一条独立的语句中完成
C.函数中可通过return语句传递函数值
D.主函数名main也可以带有形参
[解析]当函数有返回值时,调用函数可以作为一个表达式的子表达式而不作为一条独立的语句存在。
27.关于关键字class和typename,下列表述正确的是______。
3.00)
A.程序中所有的class都可以替换为typename
B.程序中所有的typename都可以替换为class
C.A和B都可以
D.A和B都不可以
28.有如下类定义:
classAA{
inta;
Public:
AA(intn=0):
a(n){}
classBB:
publicAA{
BB(intn)______
其中横线处的缺失部分是______。
A.:
a(n){}
B.:
AA(n){}
C.{a(n);
D.{a=n;
公用继承中,基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有,本题中若要给派生类继承下来基类的私有成员赋值,那么只能调用基类的成员函数来对它赋值,成员变量默认的访问权限为私有,即a为私有变量。
29.下列关于运算符重载不正确的是______。
A.运算符重载不能改变运算符的操作数个数
B.运算符重载不能改变运算符的优先级
C.运算符重载不能改变运算符的结合性
D.运算符重载能改变对预定义类型数据的操作方式
[解析]本题考查C++语言中操作符重载的概念。
运算符重载的关键字是operator。
运算符重载的规则是重载时不能改变运算符的操作数个数,不能改变运算符的优先级,不能改变运算符的结合性,不能改变对预定义类型数据的操作方式。
30.下列选项合法的标识符是______。
A.1_1
B.1-1
C._11
D.1__
[解析]C语言中标识符命名的规则是:
标识符只能由字母、数字和下画线组成,第一个字符必须为字母或下画线。
所以选项C正确。
31.下列关于运算符重载的叙述中,错误的是______。
A.有的运算符可以作为非成员函数重载
B.所有的运算符都可以通过重载而被赋予新的含义
C.不得为重载的运算符函数的参数设置默认值
D.有的运算符只能作为成员函数重载
[解析]“运算符重载”是针对C++中原有运算符进行的,不可能通过重载创造新的运算符。
除了*,.*,->*,:
,?
,这五个运算符以外,其他运算符都可以重载。
32.下列关于C++流的说明中,正确的是____。
A.与键盘、屏幕、打印机和通信端口的交互都可以通过流类来实现
B.从流中获取数据的操作称为插入操作,向流中添加数据的操作称为提取操作
C.cin是一个预定义的输入流类
D.输出流有一个名为open的成员函数,其作用是生成一个新的流对象
33.有如下函数模板:
template<classT>Tsquare(Tx){retumx*x;
其中的参数T是______。
A.函数形参
B.函数实参
C.模板实参
D.模板形参
[解析]本题x为函数形参,选项A错误;
函数实参和模板实参只有在函数模板被调用并实例化的时候才可知,选项B、C错误;
T是模板形参,选项D正确。
答案为D选项。
34.若有说明:
ints[3][4]={0}则下面叙述正确的____。
A.只有元素s[0][0]可得到初值0
B.此说明语句不正确
C.数组s中各个元素都可得到初值,但其值不一定为0
D.数组s中每个元素均可得到初值0
35.若有定义“inta[2][3];
”,下列选项中对a数组元素正确引用的是______。
A.a[2][!
1]
B.a[2][3]
C.a[0][3]
D.a[1>2][!
1]
[解析]数组的下标从O开始,数组a[2][3]包括元素a[0][0],a[0][1],a[0][2],a[1][0],a[1][1],a[1][2],只有选项D正确,1>2为假,所以是0,!
为假也是0,即引用元素a[0][0],其他选项的引用均是下标越界。
二、填空题(总题数:
15,分数:
23.00)
36.己知类sample是一个抽象类,其成员函数display是无形参、无返回类型的纯虚函数,请完成其声明:
classsample{
sample(){};
1
virtualvioddisplay()=0;
[解析]此题考查的是纯虚函数。
纯虚函数定义格式是在虚函数的后面加上“=0”。
与虚函数不同的是,纯虚函数允许没有函数体,故本题应填入的内容是virtualvioddisplay()=0;
。
37.一个C++程序的开发步骤通常包括编辑、1、链接、运行和调试。
编译
38.算法的基本特征是可行性、确
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 C+ 208
![提示](https://static.bdocx.com/images/bang_tan.gif)