二级C++151.docx
- 文档编号:7553295
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:23
- 大小:26.34KB
二级C++151.docx
《二级C++151.docx》由会员分享,可在线阅读,更多相关《二级C++151.docx(23页珍藏版)》请在冰豆网上搜索。
二级C++151
二级C++-15-1
(总分:
84.50,做题时间:
90分钟)
一、{{B}}选择题{{/B}}(总题数:
35,分数:
59.50)
1.下列程序的执行结果是{{U}}{{/U}}。
#include<iostream.h>
#include<stdlib.h>
ClassTestClass
{
public:
intx,y;
TestClass(){x=y=0;}
TestClass(inta,intb){x=a;y=b;}
voiddisp()
{
cout<<"x="<<x<<",y="<<y<<end1;
}
};
voidmain()
{
TestClasss1(2,3);
s1.disp();
}
∙A.x=2,y=2
∙B.x=3,y=3
∙C.x=2,y=3
∙D.x=3,y=2
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]由主函数入手,定义了类TestClass的对象s1(2,3),当类对象进入其作用域时调用构造函数,构造函数应该是调用具有参数的“TestClass(inta,intb){x=a;y=b;)”。
然后引用成员函数disp(),则输出为“cout<<”x=“<<x<<”,y=“<<y<<endl;”。
2.打开文件时可单独或组合使用下列文件打开模式:
①ios_base:
:
aop②ios_base:
:
binary③ios_base:
:
④ios_base:
:
out若要以二进制读方式打开一个文件,需使用的文件打开模式为{{U}}{{/U}}。
A.①③B.①④C.②③D.②④
(分数:
2.00)
A.
B.
C.
D. √
解析:
[解析]ios_base:
:
binary是作为二进制文件打开,ios_base:
:
out是为输出而打开;故因选D。
3.一个类的友元函数或友元类可以访问该类的{{U}}{{/U}}。
∙A.私有成员
∙B.所有成员
∙C.保护成员
∙D.公有成员
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]在C++中,如果想让类中的成员数据可以被其他函数访问,可以通过友元函数声明,来共享类中的资源。
友元类函数对类的属性和方法的访问能力等同于类的成员函数。
4.有如下程序:
#include<iostream>
usingnamespacestd;
classObj{
staticinti;
public:
Obj(){i++;}
~Obi(){i--;}
staticintgetVal(){returni;}
};
intObj:
:
i=0;
voidf(){Objob2;cout<<ob2.getVal();}
intmain(){
Objob1;
f();
Obj*ob3=newObj;cout<<ob3->getVal();
deleteob3;cout<<Obj:
:
getVal();
return0;
}
程序的输出结果是{{U}}{{/U}}。
∙A.232
∙B.231
∙C.222
∙D.221
(分数:
2.00)
A.
B.
C.
D. √
解析:
5.下列表示纯虚函数的成员函数是
∙A.virtualintfunc(int);
∙B.voidfunc(int)=0;
∙C.virtualvoidfunc=0;
∙D.virtualvoidflmc(int){}
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]本题考查纯虚函数的定义形式。
由于纯虚函数在最后要有“=0”,故据此排除A和D。
而B中没有出现virtual关键词,故正确答案为C。
6.若有以下程序:
#include<iostream>
usingnamespacestd;
classpoint
{
private:
intx,y;
public:
point()
{
x=0;
y=0;
}
voidsetpoint(intx1,inty1)
{
x=x1;
y=y1;
}
voiddispoint()
{
cout<<"x="<<x<<","<<"y="<<y<<end1;
}
};
intmain()
{
point*p=newpoint;
p->setpoint(5,12);
p->dispoint();
return0;
}
程序运行后的输出结果是()。
∙A.x=12,y=12
∙B.x=5,y=5
∙C.x=12,y=5
∙D.x=5,y=12
(分数:
1.00)
A.
B.
C.
D. √
解析:
[解析]本题考核对象指针的定义与使用。
分析程序:
程序首先定义一个类point,类point中有两个私有成员,整型变量x和y,还有两个公有成员函数setpoint(intx1,inty1)和dispoint()。
函数setpoint()用来设置私有成员x和y的值,而函数dispoint()用来显示私有成员x和y的值。
主函数中,首先定义了类point的指针对象p,并申请了内存空间,然后调用对象p中公有成员setpoint给对象p中的私有成员x和y赋值,然后调用成员函数dispoint显示x和y的值。
由此可知,最后输出的值应该是5,12。
7.对虚函数的调用{{U}}{{/U}}。
∙A.一定使用动态联编
∙B.必须使用动态联编
∙C.一定使用静态联编
∙D.不一定使用动态联编
(分数:
2.00)
A.
B.
C.
D. √
解析:
8.在C++中,打开一个文件,就是将这个文件与一个{{U}}{{/U}}建立关联;关闭一个文件,就是取消这种关联。
∙A.类
∙B.流
∙C.对象
∙D.结构
(分数:
1.00)
A.
B. √
C.
D.
解析:
9.若PAT是一个类,则程序运行时,语句“PAT{*aD)[3];”调用PAT的构造函数的次数是{{U}}{{/U}}。
∙A.0
∙B.1
∙C.2
∙D.3
(分数:
2.00)
A. √
B.
C.
D.
解析:
[解析]语句“PAT(*aD)[3]”定义了含有3个元素的指向类PAT类型的指针数组ad。
10.下面关于虚函数的描述,错误的是
∙A.在成员函数声明的前面加上virtual修饰,就可把该函数声明为虚函数
∙B.基类中说明了虚函数后,派生类中对应的函数也必须说明为虚函数
∙C.虚函数可以是另一个类的友元函数,但不能是静态成员函数
∙D.基类中说明的纯虚函数在其任何派生类中都必须实现
(分数:
1.00)
A.
B. √
C.
D.
解析:
解析:
基类中说明的虚函数,在派生类中自然就是虚函数,对于纯虚函数必须在后面继承的派生类中给出具体的实现;静态成员函数不能进行动态联编,所以虚函数不能是静态的。
11.在下列函数原型中,可以作为类AA构造函数的是
∙A.voidAA(int);
∙B.intAA{{U}}{{/U}};
∙C.AA(int)eonst;
∙D.AA(int);
(分数:
2.00)
A.
B.
C.
D. √
解析:
[解析]类的构造函数不能有返回值,也不能定义为返回空函数,或者用const修饰定义为常函数。
12.将E-R图转换为关系模式时,实体和联系都可以表示为______。
∙A.属性
∙B.键
∙C.关系
∙D.域
(分数:
2.00)
A.
B.
C. √
D.
解析:
从E-R图到关系模式的转换是比较直接的,实体与联系都可以表示成关系,E-R图中属性也可以转换成关系的属性。
13.下面是关于派生类声明的开始部分,其中正确的是______。
∙A.classvirtualB:
publicA
∙B.virtualclassB:
publicA
∙C.classB:
publicAvirtual
∙D.classB:
virtualpublicA
(分数:
2.00)
A.
B.
C.
D. √
解析:
[解析]类声明的部分内容。
14.设有以下定义和程序:
#include<iostream.h>
classA1
{
public:
voidshowl()
{
cout<<"classA1"<<end1;
}
};
ClassA2:
publicA1
{
public:
voidshow2()
{
cout<<"ClassA2"<<end1;
}
};
ClassA3:
protectedA2
{
public:
voidshow3()
{
cout<<”ClassA土”<<end1;
}
};
voidmain()
{
A1obj1;
A2obj2;
A3obj3;
}
则以下不合语法的调用语句是{{U}}{{/U}}。
∙A.obj1.show1();
∙B.obj2.show1();
∙C.obj3.show1();
∙D.obj2.show2();
(分数:
1.00)
A.
B.
C. √
D.
解析:
[解析]C++中,通过类的对象只能访问类的公有成员,不能访问类的保护成员和私有成员。
A2是A1的公有派生类,A3是A2的保护派生类,所以类A1的成员函数showl()在类A3中呈现保护属性,不能通过A3类的对象访问。
15.下列叙述中正确的是
∙A.线性表是线性结构
∙B.栈与队列是非线性结构
∙C.线性链表是非线性结构
∙D.二叉树是线性结构
(分数:
1.00)
A. √
B.
C.
D.
解析:
[解析]非空的数据结构如果满足下列两个条件则称为线性结构:
有且只有一个根结点;每一个结点最多有一个前件,也最多有一个后件。
线性表是线性结构。
选项A的说法正确;栈与队列是特殊的线性表,因此,它们也是线性结构,选项B的说法错误:
线性链表是线性表的链式存储结构,因此,其对应的逻辑结构也是线性结构,而不是非线性结构,选项C的说法错误;二叉树是非线性结构,而不是线性结构,选项D的说法错误。
16.进行文件操作时需要包含{{U}}{{/U}}文件。
∙A.lostream.h
∙B.fstream.h
∙C.stdio.h
∙D.stidliB.h
(分数:
1.00)
A.
B. √
C.
D.
解析:
17.有下列程序:
#include<stdio.h>
intfun(inta,intb)
{if(b==0)returna;
elsereturn(fun(--a,--b));
}
voidmain()
{printf("%d/n",fun(4,2));}
程序的运行结果是______。
∙A.1
∙B.2
∙C.3
∙D.4
(分数:
2.50)
A.
B. √
C.
D.
解析:
[解析]本题考查递归函数的使用。
fun(4,2)->fun(2,0),由于b等于0,故返回值为2。
反之,fun(4,2)=2。
18.下面程序的执行结果为
#include"iostream"
usingnamespacestd;
classA
{
inta;
public:
voidSeta(intx){a=x;}
voidDisplay_a(){cout<<a<<end1;}
};
classB
{
intb;
public:
voidSetb(intx){b=x;}
voidDispaly_b(){cout<<b<<end1;}
};
classC:
publicA,privateB
{
private:
intc;
public:
voidSetc(intx,inty,intz)
{c=z;Seta(x);Setb(y);}
voidDisplay_c(){cout<<c<<end1;}
};
①voidmain()
②{
③Ccc;
④cc.Seta
(1);
⑤cc.Display_a();
⑥cc.Setc(2,2,3);
⑦cc.Dispaly_b();
⑧cc.Display_c();
}
∙A.输出为223
∙B.有错误在第5行
∙C.输出为123
∙D.有错误在第7行
(分数:
1.00)
A.
B.
C.
D. √
解析:
[解析]考查类的继承方法。
【解题要点】pnvate继承不能调用Display_b函数,public继承可以调用基类中非pfivate成员。
【考点链接】类的继承方式public,protected和private的区别。
19.以下程序的输出结果是{{U}}{{/U}}。
#include<iostream.h>
voidmain()
{
inta(5),b(6),i(0),j(0);
switch(a)
{
case5:
switch(b)
{
case5:
i++;break;
case6:
j++;break;
default:
i++;j++;
}
case6:
i++;
j++;
break;
default:
i++;j++;
}
cout<<i<<","<<j<<endl;
}
∙A.1,2
∙B.1,3
∙C.2,2
∙D.2,3
(分数:
2.00)
A. √
B.
C.
D.
解析:
20.派生类中的成员不能直接访问基类中的{{U}}{{/U}}成员。
∙A.public
∙B.private
∙C.virtual
∙D.protected
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]即使是共有继承,其私有成员仍为私有,无法访问。
21.下列描述中正确的是______。
∙A.程序就是软件
∙B.软件开发不受计算机系统的限制
∙C.软件既是逻辑实体,又是物理实体
∙D.软件是程序、数据与相关文档的集合
(分数:
2.00)
A.
B.
C.
D. √
解析:
[解析]软件与程序有区别,软件的相关概念。
22.计算斐波那契数列第n项的函数定义如下:
intfib(intn){
if(n==0)return1;
elseif(n==1)return2;
elsereturnfib(n-1)+fib(n-2);
}
若执行函数调用表达式fib
(2),函数fib被调用的次数是
∙A.1
∙B.2
∙C.3
∙D.4
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]针对递归调用的含义,当n为2时有fib(0),fib
(1),fib
(2)被调用,且fib(0),fib
(1)时调用结束,即共3次。
23.已知类A有公用数据成员a,并重载了=运算符,且有Aobj2;constAptr*=
newA;则下列语句错误的是
∙A.ptr->a=100;
∙B.ptr=&obj2;
∙C.ptr++;
∙D.obj2=*ptr;
(分数:
2.00)
A. √
B.
C.
D.
解析:
[解析]本题考察const修饰符的作用。
注意:
const位置不同,其修饰的部分也是不同的。
本题中const修饰的是ptr所指的对象本身,所以,ptr是可以重新指向新的对象,而ptr->a则无法被更新。
24.下列程序段中包含4个函数,其中具有隐含this指针的是{{U}}{{/U}}。
intfun1();
classTest{
public:
intfun2();
friendintfun3();
staticintfun4();
};
∙A.fun1
∙B.fun2
∙C.fun3
∙D.fun4
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]this指针是成员函数所属对象的指针,是指向类对象的地址,是一个隐含的指针,隐含于每个类的非静态成员函数中。
fun1是外部函数,fun3是友元函数,fun4是静态成员函数,故选B。
25.下列叙述中正确的是
∙A.软件交付使用后还需要进行维护
∙B.软件一旦交付使用就不需要再进行维护
∙C.软件交付使用后其生命周期就结束
∙D.软件维护是指修复程序中被破坏的指令
(分数:
1.00)
A. √
B.
C.
D.
解析:
[解析]软件生命周期分为软件定义、软件开发及软件运行维护3个阶段。
维护是软件生命周期的最后一个阶段,也是持续时间最长,花费代价最大的一个阶段。
26.已知有关系模式R(sno,sname,age),其中sno表示学生的学号,类型为Char(8),前4位表示入学年份。
查询所有2003年入学的学生姓名(sname),SQL语句是_______。
∙A.SELECTsnameFROMRWHERE.sno='2003%'
∙B.SELECTsnameFROMRWHEREsnoLIKE'2003%'
∙C.SELECTsnameFROMRWHEREsno='2003_'
∙D.SELECTsnameFROMRWHEREsnoLIKE'2003_'
(分数:
2.00)
A.
B. √
C.
D.
解析:
27.下列字符串中,正确的C抖标识符是{{U}}{{/U}}。
∙A.foo-1
∙B.2b
∙C.new
∙D._256
(分数:
2.00)
A.
B.
C.
D. √
解析:
28.计算机软件是______。
∙A.程序
∙B.数据
∙C.文档
∙D.程序、数据及相关文档的完整集合
(分数:
2.00)
A.
B.
C.
D. √
解析:
[解析]计算机软件是包括程序、数据及相关文档的完整集合。
29.关于关键字class和typename,下列描述正确的是{{U}}{{/U}}。
∙A.程序中所有的class都可以替换为typename
∙B.程序中所有的typename都可以替换为class
∙C.A和B都可以
∙D.A和B都不可以
(分数:
2.00)
A.
B. √
C.
D.
解析:
30.关于C++语言与C语言关系描述中错误的是
∙A.C++语言是C语言的超集
∙B.C++语言对C语言进行了扩充
∙C.C++语言包含C语言的全部语法特征
∙D.C++语言与C语言都是面向对象的程序设计语言
(分数:
1.00)
A.
B.
C.
D. √
解析:
解析:
C语言是一种面向过程的程序设计语言,而C++语言是一种面向对象的设计语言,C++语言是C语言的超集,它包含了C语言的所有语言特性,并进行了扩充。
31.下列关于类定义的说法中,正确的是______。
∙A.类定义中包括数据成员和函数成员的声明
∙B.类成员的缺省访问权限是保护的
∙C.数据成员必须被声明为私有的
∙D.成员函数只能在类体外进行定义
(分数:
1.00)
A. √
B.
C.
D.
解析:
[解析]类的成员的缺省访问权限是私有的,数据成员可以是私有,可以是公用的,也可以是受保护的。
类的成员函数可以在类内定义。
32.下列关于关系运算的叙述中正确的是
∙A.投影、选择、连接是从二维表的行的方向来进行运算
∙B.并、交、差是从二维表的列的方向来进行运算
∙C.投影、选择、连接是从二维表的列的方向来进行运算
∙D.以上三种说法都不对
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]在关系模型的数据语言中,一般除了运用常规的集合运算(并、交、差、笛卡尔积等)外,还定义了一些专门的关系运算,如投影、选择,连接等运算.前者是将关系看成是元组的集合,这些运算主要是从二维表的行的方向来进行的;后者主要是从二维表的列的方向来进行运算。
周此,选项A与B错误,选项C正确。
33.有如下程序:
#include<iostream>
usingnamespacestd;
classMyClass{
public:
MyClass(){++count;}
~MyClass(){--count;}
staticintgetCount(){returncount;}
private:
staticintcount;
};
intMyClass:
:
count=0;
intmain()
{
MyClassobj;
cout<<obj.getCount();
MyClass*ptr=newMyClass;
cout<<MyClass:
:
getCount();
deleteptr;
cout<<MyClass:
:
getCount();
return0;
}
执行这个程序的输出结果是______。
∙A.121
∙B.232
∙C.221
∙D.122
(分数:
1.00)
A. √
B.
C.
D.
解析:
[解析]本题考查静态数据成员。
静态数据成员在内存中只占一份空间,静态数据成员属于类,即使不定义对象,也会给静态数据成员分配空间,可以被引用。
本题中先是定义了一个对象obj,执行构造函数使得静态数据成员count变为了1,然后又定义了指针对象,执行构造函数后,count变为了2,释放指针后,执行析构函数,使得count变为了1。
所以本题
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 C+ 151