计算机二级C++笔试真题无答案.docx
《计算机二级C++笔试真题无答案.docx》由会员分享,可在线阅读,更多相关《计算机二级C++笔试真题无答案.docx(13页珍藏版)》请在冰豆网上搜索。
计算机二级C++笔试真题无答案
计算机二级C++笔试
(总分83,考试时间90分钟)
一、选择题
1.不能重载的运算符是
A)new B)sizeof C).* D)++
2.设a=1;b=2;,则(a++)+b和a+++b这两个表达式的值分别为( )。
A.3,3 B.3,4 C.4,3 D.4,4
3.设有以下说明和定义:
#include<iostream.h>
Voidmain()
typedefunion
longi;intk[5];charc;
DATE;
structdate
intcat;DATEcow;doubledog;too;
DATEmax;
cout<<(sizeof(structdate)+sizeof(max))<<end1;
A.26 B.52
C.18 D.8
4.下列关于多态性的描述,错误的是( )。
A)C++语言的多态性分为编译时的多态性和运行时的多态性
B)编译时的多态性可通过函数重载实现
C)运行时的多态性可通过模板和虚函数实现
D)实现运行时多态性的机制称为动态绑定
5.t为int类型,进入下面的循环之前,t的值为0。
while(t=1)...
则以下叙述中,正确的是( )。
A)循环控制表达式的值为0 B)循环控制表达式的值为1
C)循环控制表达式不合法 D)以上说法都不对
6.下列描述中,( )是抽象类的特性。
A.可以说明虚函数 B.可以进行构造函数重载
C.可以定义友元函数 D.不能说明其对象
7.有如下程序:
#include<lostreanl>
usingnamespacestd;
elassMyClass
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<<MyCiass:
:
getCount();
return0;
程序的输出结果是
A)121 B)232 C)221 D)122
8.在下面的运算符重载函数的原型中,错误的是( )。
A)Volumeoperator-(double,double);
B)doubleVolume:
:
operator-(double);
C)VolumeVolume:
:
operator-(Volume);
D)Volumeoperator-(Volume);
9.下列有关继承和派生的叙述中,正确的是
A)派生类不能访问基类的保护成员
B)作为虚基类的类不能被实例化
C)派生类应当向基类的构造函数传递参数
D)虚函数必须在派生类中重新实现
10.下列关于getline()函数的描述,不正确的是______。
A)getline()函数是用来从输入流中读取字符串的
B)getline()函数读取字符串的长度是受到限制的
C)getline()函数读取字符串时,遇到终止符时就停止
D)getline()函数中所使用的终止符只能是换行符
11.有如下程序:
#include<iostream>
usingnamespacestd;
classMusic
public:
voidsetTitle(char*str)strcpy(title,str);
protected:
chartype[10];
private:
chartitle[20];
;
classJazz:
publicMusic
public:
voidset(char*str)
strcpy(type,"Jazz");//①
strcpy(title,str); //②
;
下列叙述中正确的是( )。
A.程序编译正确 B.程序编译时语句①出错
C.程序编译时语句②出错 D.程序编译时语句①和②都出错
12.软件工程的出现是由于
A)程序设计方法学的影响 B)软件产业化的需要
C)软件危机的出现 D)计算机的发展,
13.假定a为一个整型数组名,则元素a[4]的字节地址为
A)a+4 B)a+8 C)a+16 D)a+32
14.如果表达式y*x++中,“*”是作为成员函数重载的运算符,“++”是作为友元函数重载的运算符,采用运算符函数调用格式,该表达式还可表示为
A)x.operator++(0).operator*(y); B)operator*(x.operator++(0),y);
C)y.operator*(operator++(x,0)) D)operator*(operator++(x,0),y)
15.复审应该把重点放在系统的总体结构、模块划分、内外接口等方面。
A)详细设计 B)系统设计
C)正式 D)非正式
16.继承机制的作用是
A)信息隐藏 B)数据封装 C)定义新类 D)数据抽象
17.下面的哪个选项不能作为函数的返回类型?
A)void B)int C)new D)long
18.在下面的引用定义中,正确的是______。
A)intx,&y;
y=x;
B)intx,&y=x;
C)int&y=x,x;
D)floatz;
intx,y=&z;
19.下列关于new运算符的描述中错误的是
A)使用运算符new创建对象数组时必须定义初始值
B)使用运算符new创建对象时,会调用类的构造函数
C)运算符new可以用来动态创建对象和对象数组
D)使用new运算符创建的对象可以使用运算符delete删除
20.已知一个类Sample,( )是定义指向类Sample成员函数的指针,假设类有三个公有成员:
voidf1(int),voidf2(int)和inta。
A.Sample*p
B.IntSamale:
:
*pc=&Sample:
:
a
C.Void(Sample:
:
*Pa)()
D.Sample*P[10]
21.下列不属于软件工程3个要素的是( )。
A)工具 B)过程
C)方法 D)环境
22.有以下程序段:
intk=0;
while(k=1)k++;
while循环执行的次数是( )。
A.无限次 B.有语法错,不能执行
C.一次也不执行 D.执行1次
23.下面关于C++的特点中描述不正确的是( )。
A)C++是C语言的超集,大多数C程序在不用修改的情况下就可以在C++的集成环境中运行或调试
B)C++是面向对象的程序设计语言
C)C++中没有结构化编程的语句
D)C++的执行效率很高
24.下列叙述中错误的是( )。
A.在数据库设计的过程中,需求分析阶段必须考虑具体的计算机系统
B.在数据库设计的过程中,概念结构设计与具体的数据库管理系统有关
C.在数据库设计的过程中,逻辑结构设计与具体的数据库管理系统有关
D.在数据库设计的过程中,物理结构设计依赖于具体的计算机系统
25.对于拷贝初始化构造函数,正确的描述是( )。
A.在C++语言中,如果不自定义类的拷贝初始化构造函数,则每个类都有默认的拷贝初始化构造函数
B.必须为每个类定义拷贝初始化构造函数
C.如果要使用拷贝初始化构造函数,则必须在类中先定义
D.当定义了类的构造函数时,如果要使用拷贝初始化构造函数,则必须定义拷贝初始化构造函数
26.下列程序的运行结果是( )。
#include<iostream.h>
classA
inta;
public:
A()a=0;
A()intaa
a=aa;
cout<<a++;
;
voidmain()
Ax,y
(2),z(3);
cout<<endl;
A.00 B.23 C.34D.25
27.下列对模板的声明中正确的是( )。
A)template<T> B)template<classT1,T2>
C)template<classT1,classT2> D)template<classT1;classT2>
28.若有以下定义和语句:
ints[4][5],(*p)[5];
p=s;
则指针对s数组中第三个元素的正确引用形式是( )。
A)p[0][3] B)p[1][2]
C)p[0][2] D)p[1][3]
29.在一个容量为10的循环队列中,若头指针为6,尾指针为1,则此时该循环队列中共有的元素个数为( )。
A)4 B)5 C)6 D)7
30.若变量已正确定义并赋值,以下符合C++语言语法的表达式是
A)a:
=b+1 B)a=b=c+2
C)int18.5%3 D)a=a+7=c+b
31.如果类A被说明成类B的友元,则
A)类A的成员即类B的成员 B)类B的成员即类A的成员
C)类A的成员函数不得访问类B的成员 D)类B不一定是类A的友元
32.若有如下程序:
#include<iostream>
usingnamespacesstd;
ints=O;
classsample
staticintn;
public:
sample(inti)
n=i;
staticvoidadd()
s+=n;
;
intsample:
:
s=O;
intmain()
samplea
(2),b(5);
sample:
:
add();
cout<<s<<end1;
return0;
程序运行后的输出结果是
A)2 B)5
C)7 D)3
33.有以下程序:
#include<iostream>
usingnamespacestd;
classsample
private:
intx;
staticinty;
public:
sample(inta);
staticvoidprint(samples);
;
sample:
:
sample(inta)
x=a;
y+=x;
voidsample:
:
print(samples)
cout<<"x="<<s.x<<",y="<<y<<end1;
intsample:
:
y=0;
intmain()
samples1(10);
samples2(20);
sample:
:
print(s2);
return0;
程序运行后的输出结果是( )。
A.x=10,y=20 B.x=20,y=30 C.x=30,y=20 D.x=30,y=30
34.下列叙述中正确的是
A)数据的逻辑结构与存储结构必定一一对应
B)由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构
C)程序设计语言中的数组一般是顺序存储结构,因此,利用数组只能处理线性结构
D)以上三种说法都不对
35.分析下面程序,该程序的运行结果是( )。
#include<iostream.h>
classcmm
public:
staticintm;
cmm()
m++;
cmm(intn)
m=n;
staticvoidtestm()
m++;
;
intcmm:
:
m=0;
voidmain()
cmmA;
cmmB(3);
A.testm();
cram:
:
testm0;
cout<<"m="<<B.m<<endl;
A.m=3 B.m=4
C.m=5 D.m=6
二、填空题
36.数据库保护分为安全性控制、______、并发性控制和数据的恢复。
37.类的具体表现是通过______定义来操作的。
38.具有相同函数名不同参数表的函数称为 【6】 。
39.数据结构分为逻辑结构与存储结构,循环队列属于 【1】 。
40.源程序文档化要求程序应加注释。
注释一般分为序言性注释和______。
41.以下程序的输出结果是 【8】 。
#include<iostream.h>
classobject
private:
intval;
public:
object();
object(inti);
~object();;
object:
:
object()
val=0;
cout<<"Defaultconstructorforobject"<<endl;
object:
:
object(inti)
val=i;
cout<<"Constructorforobject"<<val<<endl;
object:
:
~object()
cout<<"Destructorforobject"<<val<<endl;
classcontainer private:
objectone;
objecttwo;
intdata;
public:
container();
container(inti,intj,intk);
~container();;
container:
:
container()
data=0;
cout<<"Defaultconstructorforcontainer"<<endl;
container:
:
container(inti,intj,intk):
two(i),one(j)
data=k;
cout<<"Constructorforcontainer"<<endl;
container:
:
~container()
cout<<"Destructorforcontainer"<<endl;
voidmain()
containeranObj(5,6,10);
42.执行下列程序后的输出结果是______。
#include<iostream>
usingnamespacestd;
intmain()
intx=3;
int&y=x;
y++;
cout<<x<<end1;
return0;
43.派生类构造函数的执行顺序是先执行 12 的构造函数,然后执行成员对象的构造函数,最后执行 13 的构造函数。
44.在概念设计阶段可用E-R图,其中“矩形框’表示实体, [5] 表示实体间联系。
45.在计算机软件系统的体系结构中,数据库管理系统位于用户和 【1】 之间。
46.虚函数必须是类的______。
47.指针数组是由 【7】 构成的数组。
48.下面是一个栈类的模板,其中push函数将元素i压入栈顶,pop函数弹出栈顶元素栈初始为空,top值为0,栈项元素在stack[top-]中,在下面横线处填上适当语句,完成栈类模板的定义。
template<classT>
classTstack
enumsize=1000;
Tstack[size];
inttop;
public:
Tstack():
top(0)
voidpush(constT&i)
if(top<size)
stack[top++]=i;
Tpop()
if(top==0)exit
(1);//栈空时终止运行
return______;
;
49.通过使用new和delete两个运算符进行的分配为______存储分配。
50.数据的逻辑结构有线性结构和【1】两大类。