elsecout<<*ptr;
ptr++;
}
return0;
}
A)HELLO,WORLDB)Hello,World
C)hELLO,wORLDD)hello,world
(16)已知:
intm=10;在下列定义引用的语句中,正确的是______
A)int&x=m;B)inty=&m;C)int&z;D)int&t=&m;
(17)下列函数原型声明中错误的是______
A)voidFun(intx=0,inty=0);
B)voidFun(intx,inty);
C)voidFun(intx,inty=0);
D)voidFun(intx=0,inty);
(18)已知程序中已经定义了函数test,其原型是inttest(int,int,int);,则下列重载形式中正确的是______
A)chartest(int,int,int);
B)doubletest(int,int,double);
C)inttest(int,int,int=0);
D)floattest(int,int,float=3.5F);
(19)有以下程序
#include
inti=0;
voidfun()
{
{
staticinti=1;
std:
:
cout<
}
std:
:
cout<
}
intmain()
{
fun();fun();
return0;
}
程序执行后的输出结果是______
A)1,2,1,2,B)1,2,2,3,C)2,0,3,0,D)1,0,2,0,
(20)已知函数f的原型是:
voidf(int*a,long&b);变量v1、v2的定义是:
intv1;longv2;,正确的调用语句是______
A)f(v1,&v2);B)f(v1,v2);
C)f(&v1,v2);D)f(&v1,&v2);
(21)有以下类定义
classMyClass
{
public:
MyClass(){cout<<1;}
};
则执行语句MyClassa,b[2],*p[2];后,程序的输出结果是_____
A)11B)111C)1111D)11111
(22)关于友元,下列说法错误的是______
A)如果类A是类B的友元,那么类B也是类A的友元
B)如果函数fun()被说明为类A的友元,那么在fun()中可以访问类A的私有成员C)友元关系不能被继承
D)如果类A是类B的友元,那么类A的所有成员函数都是类B的友元
(23)关于动态存储分配,下列说法正确的是______
A)new和delete是C++语言中专门用于动态内存分配和释放的函数B)动态分配的内存空间也可以被初始化
C)当系统内存不够时,会自动回收不再使用的内存单元,因此程序中不必用delete释放内存空间
D)当动态分配内存失败时,系统会立刻崩溃,因此一定要慎用new
(24)有以下程序
#include
usingnamespacestd;
classMyClass
{
public:
MyClass(intn){number=n;}
//拷贝构造函数
MyClass(MyClass&other){number=other.number;}
~MyClass(){}
private:
intnumber;
};
MyClassfun(MyClassp)
{
MyClasstemp(p);
returntemp;
}
intmain()
{
MyClassobj1(10),obj2(0);
MyClassobj3(obj1);
obj2=fun(obj3);
return0;
}
程序执行时,MyClass类的拷贝构造函数被调用的次数是______
A)5B)4C)3D)2
(25)在公有派生的情况下,派生类中定义的成员函数只能访问原基类的______
A)公有成员和私有成员B)私有成员和保护成员
C)公有成员和保护成员D)私有成员、保护成员和公有成员
(26)在C++中用来实现运行时多态性的是______
A)重载函数B)析构函C)构造函数D)虚函数
(27)一个类可以同时继承多个类,称为多继承。
下列关于多继承和虚基类的表述中,错误的是______
A)每个派生类的构造函数都要为虚基类构造函数提供实参
B)多继承时有可能出现对基类成员访问的二义性问题
C)使用虚基类可以解决二义性问题并实现运行时的多态性
D)建立最派生类对象时,虚基类的构造函数会首先被调用
(28)在一个类体的下列声明中,正确的纯虚函数声明是______
A)virtualvoidvf()=0;B)voidvf(int)=0;
C)virtualintvf(int);D)virtualvoidvf(int){}
(29)在下面的运算符重载函数的原型中,错误的是______
A)Volumeoperator-(double,double);
B)doubleVolume:
:
operator-(double);
C)VolumeVolume:
:
operator-(Volume);
D)Volumeoperator-(Volume,Volume);
(30)下列是模板声明的开始部分,其中正确的是______
A)template
B)template
C)template
D)template
(31)执行语句序列
ofstreamoutfile("DATA.DAT");
if(...)cout<<"OK";elsecout<<"FAIL";
后,如果文件打开成功显示“OK”,否则就显示“F厶n。
”。
由此可知,上面if语句的...
处的表达式应是______
A)outfile.fail()或outfileB)outfile.good()或!
outfile
C)outfile.good()或outfileD)outfile.fail()或!
outfile
(32)C++流中重载的运算符>>是一个()
A)用于输出操作的非成员函数B)用于输入操作的非成员函数
C)用于输出操作的成员函数D)用于输入操作的成员函数
(33)有以下类定义
classPoint{
public:
Point(intx=0,inty=0){_.x=x;_.y=y;}
voidMove(intxOff,intyOff)
{_x+=xOff;_.y+=yOff;}
voidPrint()const
{cout<<'('<<_x<<','<<_y<<')'<private:
int_x,_y;
};
下列语句中会发生编译错误的是______
A)Pointpt;pt.Print();
B)constPointpt;pt.Print();
C)Pointpt;pt.Move(l,2);
D)constPointpt;pt.Move(l,2);
(34)有以下类定义
classMyClass
{
private:
intid;
chargender,
char*phone;
public:
MyClass():
id(0),gender('#'),phone(NULL){}
MyClass(intno,charge='#',char*ph=NULl.)
{id=no;gende=ge;phone=ph;}
};
下列类对象定义语句中错误的是______
A)MyClassmyObj;
B)MyClassmyObj(11,"");
C)MyClassmyObj(12,'m');
D)MyClassmyObj(12);
(35)有以下程序
#include
usingnamespacestd;
classComplex
{
public:
Complex(doubler=0,doublei=0):
re(r),im(i){}
doublereal()const{returnre;}
doubleimag()const{returnim;}
Complexoperator+(Complexc)const
{returnComplex(re+c.re,im+c.im);}
private:
doublere,im;
};
intmain()
{
Complexa=Complex(l,1)+Complex(5);
cout<return0;
}
程序执行后的输出结果是______
A)6+6iB)6+1iC)1+6iD)1+1i
二、填空题(每空2分,共30分)
请将每一个空的正确答案写在答题卡[1]-[15]序号的横线上,答在试卷上不得分。
注意:
以命令关键字填空的必须拼写完整。
(1)算法的复杂度主要包括[1]复杂度和空间复杂度。
(2)数据的逻辑结构在计算机存储空间中的存放形式称为数据的[2]。
(3)若按功能划分,软件测试的方法通常分为白盒测试方法[3]____________测试方法。
(4)如果一个工人可管理多个设备,而一个设备只被一个工人管理,则实体“工人”与实体“设备”之间存在[4]的联系。
(5)关系数据库管理系统能实现的专门关系运算包括选择、连接和[5]。
(6)设有定义语句:
inta=12;,则表达式a*=2+3的运算结果是[6]。
(7)从实现的角度划分,C++所支持的两种多态性分别是[7]______时的多态性和运行时的多态性。
(8)将—个函数声明为一个类的友元函数必须使用关键字[8]。
(9)请按下面注释的提示,将类B的构造函数定义补充完整。
classA
{
inta;
public:
A(intaa=0){a=aa;}
};
classB:
publicA{
intb;
Ac;
public:
//用aa初始化基类A,用aa+1初始化类对象成员c
B(intaa):
[9]{b=aa+2;}
};
(10)下列程序的输出结果是[10]。
#include
usingnamespacestd;
intmain()
{
inti=5;
int&r=i;r=7;
cout<
return0;
}
(11)下列程序的输出结果是[11]。
#include
usingnamespacestd;
classTest{
public:
Test(){cnt++;}
~Test(){cnt--;}
staticintCount(){returncnt;}
private:
staticintcnt;
};
intTest:
:
cnt=0;
intmain()
{
cout<:
Count0<<'';
Testtl,t2;
Test*pT3=newTest;
Test*pT4=newTest;
cout<:
Count0<<'';
deletepT4;
deletepT3;
cout<:
Count()<return0;
}
(12)下面是用来计算n的阶乘的递归函数,请将该函数的定义补充完整。
(注:
阶乘的定义是n!
=n*(n-1)*...*2*1)
unsignedfact(unsignedn)
{
if(n<=1)
return1;
return[12];
}
(13)下列程序的输出结果是[13]。
#include
usingnamespacestd;
template
Tfun(Ta,Tb){return(a<=b)?
:
b;}
intmain()
{
cout<return0;
}
(14)与成员访问表达式p->name等价的表达式是[14]。
(15)下列程序的输出结果是[15]。
#include
usingnamespacestd;
classbase{
public:
intn;
base(intx){n=x;}
virtualvoidset(intm){n=m;cout<};
classderiveA:
publicbase{
public:
deriveA(intx):
base(x){}
voidset(mtm){n+=m;cout<};
classderiveB:
publicbase[
public:
deriveB(intx):
base(x){}
voidset(intm){n+=m;cout<};
intmain()
{
deriveAdl
(1);deriveBd2(3);
base*pbase;pbase=&dl;
pbase->aet
(1);pbase=&d2;
pbase->set
(2);return0;
}
计算机等级考试二级C++笔试试题(2010年3月)
一、选择题(每小题2分,共70分)
下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。
请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。
(1)下列叙述中正确的是______
A)对长度为n的有序链表进行查找,最坏情况下需要的比较次数为n
B)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(n/2)
C)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(log2n)
D)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(nlog2n)
(2)算法的时间复杂度是指______
A)算法的执行时间 B)算法所处理的数据量
C)算法程序中的语句或指令条数
D)算法在执行过程中所需要的基本运算次数
(3)软件按功能可以分为:
应用软件、系统软件和支撑软件(或工具软件)。
下面属于系统软件的是______
A)编辑软件 B)操作系统 C)教务管理系统 D)浏览器
(4)软件(程序)调试的任务是______
A)诊断和改正程序中的错B)尽可能多地发现程序中的错误
C)发现并改正程序中的所有错误D)确定程序中错误的性质
(5)数据流程图(DFD图)是______
A)软件概要设计的工具 B)软件详细设计的工具
C)结构化方法的需求分析工具
D)面向对象方法的需求分析工具
(6)软件生命周期可分为定义阶段,开发阶段和维护阶段。
详细设计属于______
A)定义阶段 B)开发阶段 C)维护阶段 D)上述三个阶段
(7)数据库管理系统中负责数据模式定义的语言是______
A)数据定义语言 B)数据管理语言
C)数据操纵语言 D)数据控制语言
(8)在学生管理的关系数据库中,存取一个学生信息的数据单位是______
A)文件 B)数据库 C)字段 D)记录
(9)数据库设计中,用E-R图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的______
A)需求分析阶段 B)逻辑设计阶段
C)概念设计阶段 D)物理设计阶段
(10)有两个关系R和T如下:
则由关系R得到关系T的操作是______
A)选择 B)投影 C)交 D)并
(11)下列关于函数的描述中,错误的是______
A)函数可以没有返回值 B)函数可以没有参数
C)函数可以是一个类的成员
D)函数不能被定义为模板
(12)若MyClass是一个类名,且有如下语句序列
MyClassc1,*c2;
MyClass*c3=newMyClass;
MyClass&c4=c1;
上面的语句序列所定义的类对象的个数是______
A)1 B)2 C)3 D)4
(13)下列关于继承方式的描述中,错误的是______
A)如果不显式地指定继承方式,缺省的继承方式是私有(private)
B)采用公有继承方式时,基类中的公有成员在派生类中仍然是公有成员
C)采用保护继承方式时,基类中的保护成员在派生类中仍然是保护成员
D)采用私有继承方式时,基类中的私有成员在派生类中仍然是私有成员
(14)将前缀运算符“--”重载为非成员函数,下列原型中,能正确用于类中说明的是______
A)Decr&operator--(int);
B)Decroperator--(Decr&,int);
C)friendDecr&operator--(Decr&);
D)frlendDecroperator--(Decr&,int);
(15)若MyTemp是一个只有一个虚拟类型参数的类模板,且有如下语句序列
MyTempp2;
MyTempp3[2];
编译系统在处理上面的语句序列时,所生成的模板MyTemp的实例的个数是______
A)1 B)2 C)3 D)0
(16)在C++中,cin是个______
A)类 B)对象 C)模板 D)函数
(17)在下列字符中,不允许作为C++标识符的是______
A)b B)B C)_ D)2
(18)下列叙述中,错误的是______
A)false是一个逻辑型常量 B