C++语言笔试3.docx
《C++语言笔试3.docx》由会员分享,可在线阅读,更多相关《C++语言笔试3.docx(25页珍藏版)》请在冰豆网上搜索。
C++语言笔试3
C++语言笔试-3
(总分:
80.00,做题时间:
90分钟)
一、单项选择题
(总题数:
40,分数:
80.00)
1.数据结构主要研究的是数据的逻辑结构、数据的运算和()。
A)数据的方法B)数据的存储结构
C)数据的对象D)数据的逻辑存储
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]数据结构是研究数据元素及其之间的相互关系和数据运算的一门学科,它包含3个方面的内容,即数据的逻辑结构、存储结构和数据的运算。
2.一棵二叉树的前序遍历结果是ABCEDF,中序遍历结果是CBAEDF,则其后序遍历的结果是()。
A)DBAC:
EFB)CBEFDA
C)FDAEBCD)DFABEC
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]由于该二叉树的前序遍历结果是ABCEDF,显然A结点为根结点,所以后序遍历时A结点是最后遍历的,其后序遍历的结果为CBEFDA。
3.在数据处理中,其处理的最小单位是()。
A)数据B)数据项
C)数据结构D)数据元素
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]数据元素是由多个数据项组成,数据是能够被计算机识别、存储和加工处理的信息载体,数据处理的最小单位是数据项。
4.在数据库系统的内部结构体系中,索引属于()。
A)模式B)内模式
C)外模式D)概念模式
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法,如数据存储的文件结构、索引、集簇及hash等存取方式与存取路径,内模式的物理性主要体现在操作系统及文件级上,它还未深入到设备级上(如磁盘及磁盘操作)。
5.以下()不属于对象的基本特征。
A)继承性B)封装性
C)分类性D)多态性
(分数:
2.00)
A. √
B.
C.
D.
解析:
[解析]对象具有如下特征:
·标识惟一性。
指对象是可区分的。
·分类性。
指可以将具有相同属性和操作的对象抽象成类。
·多态性。
指同一个操作可以是不同对象的行为。
·封装性。
从外面看只能看到对象的外部特征,而不知道也无需知道数据的具体结构以及实现操作的算法。
·模块独立性好。
对象是面向对象的软件的基本模块,对象内部各种元素彼此结合得很紧密,内聚性强。
6.数据库系统的核心是()。
A)数据模型B)软件开发
C)数据库设计D)数据库管理系统
(分数:
2.00)
A.
B.
C.
D. √
解析:
[解析]数据库管理系统DBMS是数据库系统的核心。
DBMS是负责数据库的建立、使用和维护的软件。
DBMS建立在操作系统之上,实施对数据库的统一管理和控制。
用户使用的各种数据库命令以及应用程序的执行,最终都必须通过DBMS。
另外,DBMS还承担着数据库的安全保护工作,按照DBA所规定的要求,保证数据库的完整性和安全性。
7.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做()。
A)软件矛盾B)软件危机
C)软件藕合D)软件产生
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]随着计算机软件规模的扩大,软件本身的复杂性不断增加,研制周期显著变长,正确性难以保证,软件开发费用上涨,生产效率急剧下降,从而出现了入们难以控制软件发展的局面,即所谓的“软件危机”。
8.关系模型允许定义3类数据约束,下列不属于数据约束的是()。
A)实体完整性约束
B)参照完整性约束
C)属性完整性约束
D)用户自定义的完整性约束
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]关系模型允许3类数据约束,它们是:
·实体完整性约束
该约束要求关系的主键中属性值不能为空值,这是数据库完整性的最基本要求。
·参照完整性约束
该约束是关系之间相关联的基本约束,它不允许关系引用不存在的元组:
即在关系中的外键要么是所关联关系中实际存在的元组,要么就为空值。
·用户定义的完整性约束
用户定义的完整性就是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。
9.关系表中的每一行记录称为一个()。
A)字段B)元组
C)属性D)关键码
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]在关系表中,每一列称为一个属性,对应表中的一个字段;每一行称为一个元组,对应表中的一条记录。
10.在数据库管理技术的发展中,数据独立性最高的是()。
A)人工管理B)文件系统
C)数据库系统D)数据模型
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]在人工管理阶段,数据无法共享,冗余度大,不独立,完全依赖程序;在文件系统阶段,数据共享性差;在数据库系统阶段,共享性好,独立性高。
11.下列语句中,错误的是()。
A)constintbuffer=-256;
B)constinttemp;
C)constdouble*point;
D)constdouble*rt=newdouble(5.5);
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]符号常量声明语句的语法格式是:
const类型名符号常量=初值表达式,选项B)中未给常变量赋初值,故错误;而选项C)中定义的是一个指向浮点型常量的指针,而不是定义一个浮点型常量,所以可以不赋初值。
12.下列变量名中,合法的()。
A)CHINAB)byte-size
C)doubleD)A+a
(分数:
2.00)
A. √
B.
C.
D.
解析:
[解析]变量的定义要符合标识符的定义规则。
选项B)byte-size中含有不合法的字符“-”;选项C)中的变量名是C++中的保留字;选项D)变量名中同样含有非法的字符“+”;只有选项A)符合要求。
13.在进行任何C++流的操作后,都可以用C++流的有关成员函数检测流的状态;其中只能用于检测输入流状态的操作函数名称是()。
A)failB)eofC)badD)good
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]可以用文件流对象的成员函数来判别文件流当前的状态:
fail,刚进行的操作失败时返回true,否则返回false;eof,进行输入操作时,若文件到达文件尾返回true,否则返回false;bad,如果进行了非法操作返回true,否则返回falsegood,刚进行的操作成功时返回true,否则返回false。
14.对于语句cout<<end1<<x;中的各个组成部分,下列叙述中错误的是()。
A)“cout"是一个输出流对象
B)“end1”的作用是输出回车换行
C)“x”是一个变量
D)“<<”称作提取运算符
(分数:
2.00)
A.
B.
C.
D. √
解析:
[解析]语句cout<<end1<<x;作用是输出回车和变量x的值。
所以题目中选项A)、B)、C)的叙述均正确,只有选项D)叙述错误,“<<”是插入运算符。
15.以下程序的输出结果是()。
#include<iostream.h>
main()
intm=5;
if(m++>5)
cout<<m;
elsecout<<m--;
A)7B)6C)5D)4
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]此题中,因为m++>5成立(此时m的值变为6),所以执行语句cout<<m;输出结果为6。
16.阅读下面的程序:
#include<iostream.h>
voidmain()
intx;
cin>>x;
if(x++>5)
cout<<x<<end1;
else
cout<<x--<<end1;
如果两次执行上述程序,且键盘输入分别为4和6,则输出结果分别是()。
A)4,6B)3,6C)4,7D)5,7
(分数:
2.00)
A.
B.
C.
D. √
解析:
[解析]此题首先读入数值4赋给变量x,因为x++>5不成立,因为“++”后缀,之后x的值变为5,执行语句cout<<x-<<end1;输出:
5,之后x的值变为4。
当读入的数值是6时,因为x++>5成立,所以执行语句cout<<x<<end1;输出7。
17.关于this指针的说法不正确的是()。
A)不能在程序中修改this指针
B)this指针可以给其他指针赋值,但不能修改this指针
C)静态成员函数中没有this指针
D)this指针可以被赋值
(分数:
2.00)
A.
B.
C.
D. √
解析:
[解析]this指针不能在程序中修改,不能被幅值;静态成员没有this指针,因为类中只有一个静态成员函数实例,使用this指针无意义。
18.()使一个函数可以定义成对许多不同数据类型完成同一个任务。
A)函数模板B)重载函数
C)递归函数D)模板函数
(分数:
2.00)
A. √
B.
C.
D.
解析:
[解析]函数模板是一系列相关函数的模型或样板,这些函数的源代码形式相同,只是所针对的数据类型不同。
因此,函数模板使一个函数可以定义成对许多不同数据类型完成同一个任务。
19.有如下程序:
#include<iostream>
usingnamespacestd;
inti=1;
classFun
public:
staticinti;
intvalue()returni-1;
intvalue()constreturni+1;
;
intFun:
:
i=2;
intmain()
inti=3;
Funfun1;
constFuntim2;
______
return0;
若程序的输出结果是:
123
则程序中横线处的与居室()。
A)cout<<fim1.value()<<Fun:
:
i<<fun2.value();
B)cout<<Fun:
:
i<<fun1.value()<<fun2.value();
C)cout<<fun1.value()<<fun2.value()<<Fun:
:
i;
D)cout<<fun2.value()<<Fun:
:
i<<fun1.value();
(分数:
2.00)
A. √
B.
C.
D.
解析:
[解析]此题因为定义的变量i是static类型的(main()函数内部的i只是一个局部变量),所以,选项A)中fun1.value()的返回值是1,Fun:
:
i引用的是外部变量会输出2;fun2.value();会调用常成员函数intvalue()const{rerani+1;}使得外部静态变量i的值增加为3,故输出3。
20.下列对重载函数的描述中,()是错误的。
A)重载函数中不允许使用默认参数
B)重载函数中编译是根据参数表进行选择
C)不要使用重载函数来描述毫不相干的函数
D)构造函数重载将会给初始化带来多种方式
(分数:
2.00)
A. √
B.
C.
D.
解析:
[解析]选项A)中,重载函数中是允许使用默认参数的;为了使重载函数有意义,不要使用重载函数来描述毫无相干的函数;重载函数中编译是根据参数表进行选择,包括参数的个数和类型。
21.下列关于对象概念的描述中,正确的是()。
A)对象就是C语言中的结构变量
B)对象代表着正在创建的系统中的一个实体
C)对象是一个状态和操作(或方法)的封装体
D)对象之间的信息传递是通过消息进行的
(分数:
2.00)
A.
B.
C.
D. √
解析:
[解析]对象之间的信息传递是通过消息进行的。
对象=方法(函数)+属性(数据),而C语言的结构体其实就是不同类型数据的组合。
并没有处理数据的方法。
22.在下列double型常量表示中,错误的是()。
A)E15B)35
C)3E5D)3E-5
(分数:
2.00)
A. √
B.
C.
D.
解析:
[解析]在C++中,科学计数法表示小数的方法:
E(e)左右必须有数,且E(e)的右侧只能为整数。
23.下列给字符数组进行初始化中,正确的是()。
A)charsl[]="12345abcd";
B)chars2[3]="xyz";
C)chars3[][3]='a','x','y';
D)chars4[2[3]="xyz","mnp";
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]在C++中定义二维数组时并赋值,则数组的行数可以省略不写。
选项A)、B)、D)均是字符字符串初始化。
24.对于int*pa[5];的描述,正确的是()。
A)pa是一个指向数组的指针,所指向的数组是5个int型元素
B)pa是一个指向某个数组中第5个元素的指针,该元素是int型变量
C)pa[5]表示某个数组的第5个元素的值
D)pa是一个具有5个元素的指针数组,每个元素是一个int型指针
(分数:
2.00)
A. √
B.
C.
D.
解析:
[解析]语句“int*p[5]”表示一个数组p,它的大小是5,里面存放的数据类型是int*,也就是整型指针。
称之为指针数组(从右向左解析这个表示)。
25.执行后的输出结果是()。
#include<iostream.h>
voidmain()
inti(0);
while(++i)
if(i==10)break;
if(i%3!
=1)continue;
cout<<i<<end1;
A)147B)247
C)432D)731
(分数:
2.00)
A. √
B.
C.
D.
解析:
[解析]从if(i==10)break;语句了解本循环只到10,输出i的条件是只要1-10之间的数对3取余为1的输出,所以输出的147。
26.有如下程序:
#include<iostream>
usingnamespacestd;
classA
public:
A()cout<<"A";
;
classBpublic:
B()cout<<"B";
;
classC:
publicA
Bb;
public:
C()cout<<"C";
;
intmain()
Cobj;
return0;
执行后的输出结果是()。
A)CBAB)BACC)ACBD)ABC
(分数:
2.00)
A.
B.
C.
D. √
解析:
[解析]此题中,语句Cobj对象初始化首先调用基类的构造函数A(),输出“A”,其次是C类中对象的构造函数的调用,即调用B(),输出“B”;最后是调用自身的构造函数C(),输出“C”。
27.下面程序的输出结果是()。
#include<iostream.h>
#include"string.h"
voidmain()
chara[]="HelloTest",b[]="Test";
strcpy(a,b);
cout<<a<<end1;
A)HelloB)Test
C)HelloTestD)HelloTestHelloTest
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]程序中首先定义字符数组a和b,其值分别为“HelloTest”和“Test”。
然后利用strcpy复制函数,将b的值复制给a,所以输出a的结果为Test。
28.有如下程序:
#include<iostream.h>
voidmain()
charstr[2][5]="1234","5678",*p[2];
inti,j,s=0;
for(i=0;i<2;i++)p[i]=str[i];
for(i=0;i<2;i++)
for(j=0;p[i][j]>'/0';j+=2)
s=10*s+p[i][j]-'0';
cout<<s;
A)1357B)2468C)3556D)23678
(分数:
2.00)
A. √
B.
C.
D.
解析:
[解析]程序中的“for(i=0;i<2;i++)p[i]=str[i];”语句将str中的值赋值给指针数组p。
在接下来的二重for循环中,跳取“j+=2”,p指针指向的值即“1”,“3”,“5”,“7”。
在分别对字符到整型的转换,即减去字符’0’,然后依次转换为千位,百位,十位,个位“10*s”操作输出整型s,即“1357”。
29.以下程序的输出结果是()。
#include<iostream>
usingnamespacestd;
voidfun(char**q)
++q;
cout<<*q<<end1;
main()
staticchar*s[]="HI","HELLO","TEST";
char**p;
p=s;
fun(p);
system("PAUSE");
return0;
A)为空B)HIC)HELLOD)TEST
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]由程序main主函数入手,调用fun函数,在fun函数中执行“cout<<*q<<end1;”语句实现程序输出。
主函数中变量char*s口为指针数组,char**p表示p指向的字符指针数据。
*p就代表p指向的字符指针。
语句“p=s;”表明p指向字符指针s,而**p则是s[]中的第一个字符串“HI”。
主函数将变量p传值给函数fun(char**q)中的q,在函数体内部首先执行“++q”语句,就是将q的指针指向s中的下一个字符串,即“HELLO”,所以输出语句“cout<<*q<<end1;”输出该字符串值。
30.下列程序用来判断数组中特定元素的位置所在,则输出结果为()。
#include<conio.h>
#include<iostream.h>
intfun(int*p,intn,int*j)
inti;
*j=0;
for(i=0;i<n;i++)
if(p[*j]<p[i])*j=i;
returnp[*j];
voidmain()
inta[10]=1,3,9,0,8,7,6,5,4,2;intj;
fun(a,10,&j);
cout<<j<<','<<a[j];
A)2,9B)3C)9D)3,9
(分数:
2.00)
A. √
B.
C.
D.
解析:
[解析]由程序中的主函数main入手,调用fun函数。
其中第一个实参为数组a的名字,数组名作为实参,传递的是数组的起始地址。
所以在fun函数中指针p指向了数组的第一个元素a[0]。
另外实参整型j传递的是引用,也就是i的地址。
在fun函数中在for循环中,依次将当前元素p[i]与j指针值为标识的p[*j]进行比较,取较大的。
最后循环后的结果就是p[*j]存放数组中的最大值,并且指针j为该值的标识位。
可以看出数组的最大值是9标识位为2。
31.以下程序的正确运行结果是()。
#include<iostream.h>
hatfun(int);
voidmain()
inta=2,i;
for(i=0;i<3;i++)
cout<<fun(a)<<end1;
cout<<end1;
intfun(inta)
intb=0;
staticintc=3;
b++;c++;
return(a+b+c);
A)4,5,6B)6,7,9
C)7,8,9D)7,7,7
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]主函数中在for循环中依次调用fun函数。
其中c为静态变量,到程序结束有效。
第一次循环中2+1+4=7,第二次循环20+1+5=8,第三次循环2+1+6=9。
即答案为789。
32.有以下程序:
#include<iostream>
usingnamespacestd;
inta;
intfun();
intmain()
exteminta;
intb;
a=10;
b=fun();
cout<<b<<end1;
return();
intfun()
externinta;
return(10*a);
其运行后的输出结果是()。
A)10B)1C)100D)1000
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]由主函数main入手,首先定义外部变量a,它的作用域为从变量的定义处开始,到本程序文件的末尾,赋值为10。
然后调用fun函数,在fun函数中计算10*a,其中a的作用域为到文件结尾,所以这里的a为10,即10*10。
33.静态数据成员在()进行初始化。
A)成员函数列表B)类体外
C)构成函数D)成员函数
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]静态数据成员不能在参数初始化表对静态数据成员初始化,只能在类体外进行初始化。
34.有如下程序:
#include<iostream>
usingnamespacestd;
classTestClass1
public:
TestClass1()cout<<"TestClass1";
~TestClass1()cout<<"~TestClass1";
;
classTestClass2:
publicTestClass1
TestClassl*p;
public:
TestClass2()cout<<"TestClass2";p=new
TestClass1();
~TestClass2()cout<<"~TestClass2";deletep;
;
intmain()
TestClass2obj;
return0;
执行这个程序的输出结果是()。
A)TestClass2TestClass1TestClass1~TestClass1~TestClass2~TestClass1
B)TestClass1TestClass2T