二级C++192.docx
- 文档编号:24099872
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:28
- 大小:27.03KB
二级C++192.docx
《二级C++192.docx》由会员分享,可在线阅读,更多相关《二级C++192.docx(28页珍藏版)》请在冰豆网上搜索。
二级C++192
二级C++-19-2
(总分:
85.00,做题时间:
90分钟)
一、{{B}}选择题{{/B}}(总题数:
35,分数:
58.00)
1.以下程序执行后的输出结果是
#include<iostream>
usingnamcspacestd;
voidtry(int,int,int,int);
intmain()
{
intx,y,z,r;
x=1;
y=2;
try(x,y,z,r);
cout<<r<<end1;
return0;
}
voidtry(intx,inty,intz,intr)
{
z=x+y;
x=x*x;
y=y*y;
r=z+x+y;
}
∙A.18
∙B.9
∙C.10
∙D.不确定
(分数:
1.00)
A.
B.
C.
D. √
解析:
[解析]本题考核函数调用(参数的传递)。
本题常见的错误解答是:
把x=1,y=2代入到函数try中,逐步计算出r=8。
最后得到r的输出值是8。
以下是正确解答,根据程序逐步分析:
程序中定义了一个名为try的void型函数,即函数try没有任何返回值。
而try函数在main函数中是以一条独立语句的方式被调用的,且main函数最后输出变量r的值。
但在main函数中,并没有对变量r赋值。
在C++语言中,数据只能从实参单向传递给形参,称为按值传递。
也就是说,当简单变量作为实参时,用户不能在函数中改变对应实参的值。
所以虽然在函数try中,r的值为8,但它并不能传递给实参,当然最终的输出肯定是不确定的随机数了。
2.下列叙述中正确的是{{U}}{{/U}}。
∙A.一个逻辑数据结构只能有一种存储结构
∙B.逻辑结构属于线性结构,存储结构属于非线性结构
∙C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率
∙D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率
(分数:
2.00)
A.
B.
C.
D. √
解析:
[解析]数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式,一种数据结构可以根据需要采用不同的存储结构,常用的存储结构有顺序和链式结构。
采用不同的存储结构,共处理的效率是不同的。
3.单个用户使用的数据视图的描述称为
∙A.外模式
∙B.概念模式
∙C.内模式
∙D.存储模式
(分数:
1.00)
A. √
B.
C.
D.
解析:
[解析]选项A)正确,外模式是用户的数据视图,也就是用户所见到的数据模式;选项B)不正确,全局数据视图的描述称为概念模式,即数据库中全部数据的整体逻辑结构的描述;选项C)不正确,物理存储数据视图的描述称为内模式,即数据库在物理存储方面的描述;选项D)不正确,存储模式即为内模式。
4.有以下定义,则此数组的元素中不正确的一个赋值结果是______。
staticinta[10]={1,2,3,4,5};
∙A.a[10]=2
∙B.a[0]=1
∙C.a[3]=4
∙D.a[7]=0
(分数:
2.00)
A. √
B.
C.
D.
解析:
5.在下列程序的横线处填上适当的内容,使程序执行后的输出结果为ABCD。
#include<iostream>
usingnamespacestd;
classA
{
public:
A(){cout<<'A';}
};
classB:
______
{
public:
B(){cout<<'B';}
};
classC:
virtualpublicA
{
public:
C(){cout<<'C';}
};
classD:
publicB,publicC
{
public:
D(){cout<<'D';}
};
voidmain(){Dobj;}
∙A.publicA
∙B.privateA
∙C.protectedA
∙D.virtualpublicA
(分数:
2.00)
A.
B.
C.
D. √
解析:
[解析]由主函数mian入手,定义了类D对象obj。
其中D为类B和C的公有继承,A是C的虚基类。
题目中要求的输出结果为“ABCD”,依次为类A,类B,类C,类D中构造函数的输出语句。
为了保证基类通过多条路径被派生类继承时,即保证A只被继承一次,输出一个A,所以不但需要声明A为C的虚基类,同样也要声明A为B的虚基类。
6.有如下程序
#include<iostream.h>
voidmain()
{charch[2][5]={"6937","8254"},*p[2];
inti,j,s=0;
for(i=0;i<2;i++)p[i]=ch[i];
for(i=0;<2;i++)
for(j=0;p[i][j]>‘/0’;j+=2)
s=10*s+p[i][j]-’0’;
cout<<s;}
该程序的输出结果是
∙A.69825
∙B.63825
∙C.6385
∙D.693825
(分数:
1.00)
A.
B.
C. √
D.
解析:
[解析]该题主要要搞清楚以下几点:
①定义了一个指针数组char*P[2]后,程序中第一个循环for(i=0;i<2;i++)P[i]=ch[i];的作用是使指针数组的P[0]元素(它本身是一个指针)指向了二维数组ch的第一行字符串,并使指引数组的P[1]元素指向了二维数组汕的第二行字符中。
这样,就使指针数组p和二维数组ch建立起了一种对应关系,以后对二维数组ch的某个元素的引用就有两种等价的形式:
ch[i][j]或p[i][j]。
②对二维数组ch的初始化,使其第一行ch[0]中存入了字符串"6937’’,第二行ch[1]中的内容为字符串“8254”。
③程序中第二个循环中的循环体s=s*10+p[i][j]-’0’;的功能是这样的,每执行一次,将s中的值乘以10(也即,将s中的数值整体向左移动一位,并在空出来的个位上添一个0),再将当前P[i][j]中的字符量转换为相应的数字,然后把这个数字加到s的个位上④注意到内层循环的循环条件P[i][j]>’/0’,是指p[i][j]中的字符只要不是字符串结束标志’/0’就继续循环,语句。
j+2;是使下标.j每次增加2,也即一个隔一个地从p[i]所指向的字符串中取出字符。
经过上述解析后,不难看出,该程序首先从P[0]所指向的字符申“6937’’中一个隔一个地取出字符,分别是“6”和“3”,然后从p[1]所指向的字符串“8254’’中一个隔一个地取出字符,分别是“8”和“5”,同时经过转换和相加运算后,结果s中的值应该是6385。
7.有关构造函数的说法不正确的是{{U}}{{/U}}。
∙A.构造函数名字和类的名字一样
∙B.构造函数在说明类变量时自动执行
∙C.构造函数无任何函数类型
∙D.构造函数有且只有一个
(分数:
1.00)
A.
B.
C.
D. √
解析:
8.下列叙述中正确的是
∙A.实体集之间一对一的联系实际上就是二一对应的关系
∙B.关系模型只能处理实体集之间一对一的联系
∙C.关系模型属于格式化模型
∙D.以上三种说法都不对
(分数:
2.00)
A.
B.
C.
D. √
解析:
[解析]实体集之间一对一的联系不一定是一一对应的关系。
例如,在一个教室中,实体集“学生”与实体集“座位”之间是一对一的联系。
因为实体集“学生”中的每一个学生最多与实体集“座位”中的一个座位有联系(学生坐在该座位上);并且.实体集“座位”中中的每一个座位也最多与实体集“学生”中的一个学生有联系(座位上坐着该学生)。
但该教室中的学生与座位之间不一定是一一对应的关系,因为有可能某些座位是空的,没有学生去坐。
因此,选项A中的说法是错误的。
在关系模型中,由于使用表格数据来表示实体之间的联系,因此,可以直接描述多对多的实体联系。
因此,选项B中的说法也是错误的。
关系模型是与格式化模型完全不同的数据模型,它与层次模型、网状模型相比有着本质的区别。
关系模型是用表格数据来表示实体本身及其相互之间的联系,它是建立在数学理论基础上的。
因此,选项C中的说法也是错误的。
9.在下列字符中,不允许作为C++标识符的是{{U}}{{/U}}。
∙A.b
∙B.B
∙C.-
∙D.2
(分数:
2.00)
A.
B.
C.
D. √
解析:
[解析]在C++中,标识符只能以字母、数字和下划线组成,并且首字母不能为数宇。
所以D选项错误。
10.模块独立性是软件模块化所提出的要求,衡量模块独立性的度量标准则是模块的{{U}}{{/U}}。
∙A.抽象和信息隐蔽
∙B.局部化和封装化
∙C.内聚性和耦合性
∙D.激活机制和控制方法
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]衡量模块独立性的度量标准则是模块的内聚性和耦合性。
11.用链表表示线性表的优点是{{U}}{{/U}}。
∙A.便于随机存取
∙B.花费的存储空间较顺序存储少
∙C.便于插入和删除操作
∙D.数据元素的物理顺序与逻辑顺序相同
(分数:
1.00)
A.
B.
C. √
D.
解析:
12.已知Value是一个类,Value是Value的一个对象。
下列以非成员函数形式重载的运算符函数原形中,正确的是______。
∙A.Valueoperator+(Valuev,inti);
∙B.Valueoperator+(Valuev=value,inti);
∙C.Valueoperator+(Valuevinti=0);
∙D.Valueoperator+(Valuev=value,inti=0);
(分数:
1.00)
A.
B. √
C.
D.
解析:
[解析]非成员函数的重载运算符函数的格式为operator+(),是运算符十重载函数。
13.下列描述中哪个是正确的?
∙A.派生类构造函数中没有调用父类构造函数则没有对父类初始化
∙B.子类构造函数不能是内联函数
∙C.派生类构造函数中可以对父类数据成员赋值
∙D.构造函数的返回值为void类型
(分数:
1.00)
A.
B.
C. √
D.
解析:
[解析]C++语言中继承中的赋值问题。
【解题要点】C++语言中基类的构造函数是可以被派生类继承并赋值的。
【考点链接】构造函数和析构函数均无返回值。
14.下面关于对象概念的描述中,{{U}}{{/U}}是错误的。
∙A.对象就是C语言中的结构体变量
∙B.对象代表着正在创建的系统中的一个实体
∙C.对象是一个状态和操作(或方法)的封装体
∙D.对象之间的信息传递是通过消息进行的
(分数:
2.00)
A. √
B.
C.
D.
解析:
15.定义如下变量:
charone_char;,则语句cout<<one_char;显示结果相当于C语言中的{{U}}{{/U}}语句。
∙A.printf(one_char);
∙B.prinff("%c",one_char);
∙C.scanf(one_char);
∙D.scanf("%c",&one_char);
(分数:
2.00)
A.
B. √
C.
D.
解析:
16.若有以下定义:
inta[]={1,2,3,4,5,6,7};
charc1='b',C2='2';
则数值不为2的表达式是
∙A.a[1]
∙B.'d'-c1
∙C.a['3'-c2]
∙D.c2-0
(分数:
1.00)
A.
B.
C.
D. √
解析:
[解析]本题考查数组的定义、初始化及其引用,以及对字符ASCII码值的熟悉程度。
解本题的关键在于熟悉字符的ASCII码值。
字符在进行数学运算时取其ASCII码值,其中'b',的ASCII码值为98,'d'的ASCII码值为100,字符'2'的ASCII码值为50。
根据以上知识,可知D)选项中表达式c2-0的值为50。
17.下面程序的运行结果是{{U}}{{/U}}。
#include<iostream.h>
voidmain()
{
inti=1;
while(i<=8)
if(++i%3!
=2)continue;
elsecout<<i;
}
∙A.25
∙B.36
∙C.258
∙D.369
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]应该先做++运算,然后进行%运算,最后比较不等式,实际上最后输出的结果就是被3除,余数为2的不大于8的数。
18.有如下程序:
#include<iostream>
usingnamespacestd;
classPoint{
public:
staticintnumber;
public:
Point(){number++;}
~Point(){number--;}
};
intPoint:
:
number=0;
intmain(){
Point*ptr;
PointA,B;
{
Point*ptr_point=newPoint[3];
ptr=ptr_point;
}
PointC;
cout<<Point:
:
number<<endl;
delete[]ptr;
return0;
∙A.3
∙B.4
∙C.6
∙D.7
(分数:
2.00)
A.
B.
C. √
D.
解析:
本题考查默认构造函数,题目中定义一个对象A、B以及对象数组Point[3],又定义了对象C,共执行6次构造函数,number变为了6,所以本题答案为C。
19.有如下程序:
#include<iostream>
usingnamespacestd;
classPair{
intm,n;
public:
Pair(intj,intk):
m(j),n(k){}
intget(){returnm;}
intget()const{returnm+n;}
};
intmain(){
Paira(3,5);
constPairb(3,5);
cout<<a.get()<<b.get();
return0;
}
执行这个程序的输出结果是______。
∙A.33
∙B.38
∙C.83
∙D.88
(分数:
1.00)
A.
B. √
C.
D.
解析:
[解析]本题考查常对象、常成员函数及构造函数。
常对象只能调用常成员函数,所以本题中,对象a为普通对象,执行a.get()后,会执行默认构造函数,输出3;对象b为常对象,执行b.get()后,会执行常构造函数,输出8。
20.在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函数是
∙A.友元函数
∙B.虚函数
∙C.构造函数
∙D.析构函数
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]构造函数在创建对象时系统自动调用,其功能是使用给定的值将对象初始化。
21.下面程序错误的语句是
①#include<iostream.h>
②voidmain( )
③{
④ int*p=newint[1];
⑤ p=9;
⑥ cout<<*p<<endl;
⑦ delete[ ]p;
⑧}
∙A.④
∙B.⑤
∙C.⑥
∙D.⑦
(分数:
1.00)
A.
B. √
C.
D.
解析:
解析:
本题考查的是指针的使用,p是指向int型的指针,若想给它指向的元素赋值,应使用*符号,直接赋值相当于改变了原来P存储的地址。
22.数据库系统的核心是______。
∙A.数据库
∙B.数据库管理系统
∙C.数据模型
∙D.软件工具
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]数据库管理系统是数据库系统的核心。
23.已知枚举类型定义语句为:
enumToken{NAME,NUMBER,PLUS=5,MINUS,PRINT=10};
则下列叙述中错误的是{{U}}{{/U}}。
∙A.枚举常量NAME的值为1
∙B.枚举常量NUMBER的值为1
∙C.枚举常量MINUS的值为6
∙D.枚举常量PRINT的值为10
(分数:
2.00)
A. √
B.
C.
D.
解析:
[解析]此题考查的是C++语言的数据类型。
第一个枚举常量的值为0;允许程序显示的定义中指定部分或全部枚举常量的值,枚举常量默认时,在前一枚举常量值的基础上以此增1。
24.以下的for循环
for(x=0,y=0,(y!
=123)&&(x<4);x++);
∙A.是无限循环
∙B.循环次数不定
∙C.最多执行4次
∙D.最多执行3次
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]本题考察for循环的三个表达式的用法及其执行顺序,本题中for循环的第三个表达式完成变量自增,以控制for循环的执行次数。
25.设有如下三个关系表:
下列操作中正确的是{{U}}{{/U}}。
∙A.T=R∩S
∙B.T=R∪S
∙C.T=R×S
∙D.T=R/S
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]关系代数中的集合运算有并、差、交和笛卡儿积四种。
根据本题关系T中的元组可知,它是由关系R和关系S进行笛卡儿积运算得到的。
26.C++语言函数中不能由系统自动生成的是
∙A.析构函数
∙B.构造函数
∙C.内联函数
∙D.复制构造函数
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]考查一个类中由系统自动生成的函数。
[解题要点]一个类中由系统自动生成的函数有构造函数、析构函数、拷贝构造函数。
[错解分析]内联函数只能由用户自己定义。
[考点链接]类能自动生成的函数,尤其注意构造函数和析构函数,还有拷贝构造函数。
27.在结构化设计方法中,生成的结构图(SC)中,带有箭头的连线表示
∙A.模块之间的调用关系
∙B.程序的组成成分
∙C.控制程序的执行顺序
∙D.数据的流向
(分数:
1.00)
A. √
B.
C.
D.
解析:
[解析]让考生对常用的软件结构设计工具要有较深入的了解。
【解题要点】常用的软件结构设计工具是结构图(SC-StructureChart),也称程序结构图。
其中,矩形内用于注明模块的功能和名字;箭头表示模块间的调用关系,带实心圆的箭头表示传递的是控制信息,带空心圆的箭头表示传递的是数据。
【考点链接】根据结构图设计思想,了解结构图构成的基本形式。
28.______给出了数据库物理存储结构与物理存取方法
∙A.概念模式
∙B.外模式
∙C.子模式
∙D.物理模式
(分数:
2.00)
A.
B.
C.
D. √
解析:
[解析]概念模式,数据库系统中全局数据逻辑结构的描述,全体用户公共数据视图:
外模式,也称子模式与用户模式,是用户的数据视图,也就是用户所见到的数据模式;内模式,又称物理模式,它给出了数据库物理存储结构与物理存取方法。
29.有三个关系R、S和T如下:
则由关系R和S得到关系T的操作是{{U}}{{/U}}。
∙A.自然连接
∙B.差
∙C.交
∙D.并
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]由三个关系R、S和T的结构可以知道,关系T是由关系R、S经过差运算得到的。
30.如果关系R中有4个属性和3个元组,关系S中有3个属性和5个元组,则R×S的属性个数和元组个数分别是______。
∙A.7和8
∙B.7和15
∙C.12和8
∙D.12和15
(分数:
2.00)
A.
B. √
C.
D.
解析:
31.数据库管理系统是______。
∙A.操作系统的一部分
∙B.在操作系统支持下的系统软件
∙C.一种编译系统
∙D.一种操作系统
(分数:
2.00)
A.
B. √
C.
D.
解析:
数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中数据组织、数据操纵、数据维护、控制及保护和数据服务等。
是一种在操作系统之上的系统软件。
32.关于静态数据成员的描述中正确的是
∙A.类的静态数据成员不是类的所有对象共享的数据
∙B.类的静态数据成员不能被类的成员函数调用
∙C.类的静态数据成员不能被类的构造函数调用
∙D.类的静态数据成员必须进行初始化
(分数:
2.00)
A.
B.
C.
D. √
解析:
[解析]C++类中的静态成员变量是该类中所有对象所共有的,它能够被类中的任何函数调用,所以选项A)、选项B)、选项C)是错误的。
而类的静态数据成员是必须要进行初始化才能使用的。
33.执行语句:
{cout<<setfill('*')<<setw(10)<<setfill('#')<<left<<123<<"OK"<<endl;return0;)后将输出{{U}}{{/U}}。
∙A.123*******OK
∙B.123#######OK
∙C.123********OK********
∙D.123#######OK########
(分数:
2.00)
A.
B. √
C.
D.
解析:
34.已知一个有序线性表为(13,18,24,35,47,50,62,83,90,115,134),当用二分法查找值为90的元素时,查找成功的比较次数为{{U}}{{/U}}。
∙A.1
∙B.2
∙C.3
∙D.9
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]根据二分法查找需要两次:
①首先将90与表中间的元素50进行比较,由于90大于50,所以在线性表的后半部分查找:
②第二次比较的元素是后半部分的中间元素,即90,这时两者相等,即查找功。
35.有以下程序
#include
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 C+ 192