计算机2级C++等级考试word版.docx
《计算机2级C++等级考试word版.docx》由会员分享,可在线阅读,更多相关《计算机2级C++等级考试word版.docx(14页珍藏版)》请在冰豆网上搜索。
计算机2级C++等级考试word版
2010年3月计算机等级考试二级
C++笔试试题
一、选择题(每小题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)1B)2C)3D)0
(16)在C++中,cin是个
A)类B)对象C)模板D)函数
(17)在下列字符中,不允许作为C++标识符的是
A)bB)BC)_D)2
(18)下列叙述中,错误的是
A)false是一个逻辑型常量B)"b"是一个字符型常量
C)365是一个int常量D)3.1415926是一个double常量
(19)若x和y是程序中的两个整型变量,则下列if语句中正确的是
A)if(x==0)y=1;elsey=2;B)if(x==0)theny=1elsey=2;
C)if(x==0)y=1elsey=2;D)ifx==0y=1;elsey=2;
(20)要定义整型数组x,使之包括初值为O的三个元素,下列语句中错误的是
A)intx[3]={0,0,0};B)intx[]={0};C)staticintx[3]={0};D)intx[]={0,0,0};
(21)关于函数中的<返回类型>,下列表述中错误的是
A)<返回类型>中有可能包含关键字intB)<返回类型>中有可能包含自定义标识符
C)<返回类型>中有可能包含字符*D)<返回类型>中可能包含[]
(22)要定义一个引用变量p,使之引用类MyClass的一个对象,正确的定义语句是
A)MyClassp=MyClass;B)MyClassp=newMyClass;
C)MyClass&p=newMyClass;D)MyClassa,&p=a;
(23)有如下两个类定义
classXX{
private:
doublex1;
protected:
doublex2;
public:
doublex3;
};
classYY:
protectedXX{
private:
doubley1;
protected:
doubley2;
public:
doubley3;
};
在类YY中保护成员变量的个数是
A)1B)2C)3D)4
(24)下列关于运算符重载的描述中,错误的是
A)可以通过运算符重载在C++中创建新的运算符
B)赋值运算符只能重载为成员函数
C)运算符函数重载为类的成员函数时,第一操作数是该类对象
D)重载类型转换运算符时不需要声明返回类型
(25)下列关于类模板的描述中,错误的是
A)类模板的成员函数都是模板函数
B)可以为类模板参数设置默认值
C)类模板描述了一组类
D)类模板中只允许有一个类型参数
(26)下列控制格式输入输出的操作符中,能够设置浮点数精度的是
A)setprecision
B)setw
C)setfill
D)showpoint
(27)下列程序段中包含4个函数,其中具有隐含this指针的是
intfun1();
classTest{
public:
intfun2();
friendintfun3();
staticintfun4();
};
A)fun1B)fun2C)fun3D)fun4
(28)有如下程序
#include
usingnamespacestd;
classTest{
public:
Test(){}
Test(constTest&t){cout<<1;}
};
Testfun(Test&u){Testt=u;returnt;}
intmain(){Testx,y;x=fun(y);return0;}
运行这个程序的输出结果是
A)无输出B)1C)11D)111
(29)有如下程序
#include
usingnamespacestd;
classA{
public:
A(inti=0):
r1(i){}
voidprint(){cout<<'E’< voidprint()const{cout<<'C'< voidprint(intx){cout<<'P'< private:
intr1;
};
intmain(){
Aa1;
constAa2(4);
a1.print
(2);
a1.print();
return0;
}
运行时的输出结果是
A)P8-E4B)P8-C16-C)P0-E4-D)P0-C16-
(30)下列代码声明了3个类
classPerson{};
classStudent:
publicPerson{};
classUndergraduate:
Student{};
下列关于这些类之间关系的描述中,错误的是
A)类Person是类Undergraduate的基类
B)类Undergraduate从类Student公有继承
C)类Student是类Person的派生类
D)类Undergraduate是类Person的派生类
(31)有如下程序
#include
usingnamespacestd;
ClassBase{
public:
Base(intx=0):
valB(x){cout< ~Base(){cout< private:
intvalB;
};
classDerived:
publicBase{
public:
Derived(intx=0,inty=0):
Base(x),valD(y){cout< ~Derived(){cout< private:
intvalD;
};
intmain(){
Derivedobj12(2,3);
retuen0;
}
运行时的输出结果是
A)2332B)2323C)3232D)3223
(32)下面是类Shape的定义:
classShape{
public:
virtualvoidDraw()=0;
};
下列关于Shape类的描述中,正确的是
A)类Shape是虚基类B)类Shape是抽象类
C)类Shape中的Draw函数声明有误D)语句“Shapes;”能够建立Shape的一个对象s
(33)将运算符“+”重载为非成员函数,下列原型声明中,错误的是
A)MyClockoperator+(MyClock,long);
B)MyClockoperator+(MyClock,MyClock);
C)MyClockoperator+(long,long);
D)MyClockoperator+(long,MyClock);
(34)打开文件时可单独或组合使用下列文件打开模式
①ios_base:
:
app②ios_base:
:
binary
③ios_base:
:
in④ios_base:
:
out
若要以二进制读方式打开一个文件,需使用的文件打开模式为
A)①③B)①④C)②③D)②④
(35)有如下程序:
#include
usingnamespacestd;
ClassB{
public:
B(intxx):
x(xx){++cout;x+=10;}
virtualvoidshow()const
{cout< protected:
staticintcount;
private:
intx;
};
classD:
publicB{
public:
D(intxx,intyy):
B(xx),y(yy){++count;y+=100;}
virtualvoidshow()const
{cout< private:
inty;
};
intB:
:
count=0;
intmain(){
B*ptr=newD(10,20);
ptr->show();
deleteptr;
return0;
}
运行时的输出结果是
A)1_120B)2_120C)1_20D)2_20
二、填空题(每空2分,共30分)
请将每一个空的正确答案写在答题卡【l】~【15】序号的横线上,答在试卷上不得分。
(1)一个队列的初始状态为空。
现将元素A,B,C,D,E,F,5,4,3,2,1依次入队,然后再依次退队,则元素退队的顺序为【1】。
(2)设某循环队列的容量为50,如果头指针front=45(指向队头元素的前一位置),尾指针rear=10(指向队尾元素),则该循环队列中共有【2】个元素。
(3)设二叉树如下:
对该二叉树进行后序遍历的结果为【3】。
(4)软件是【4】、数据和文档的集合。
(5)有一个学生选课的关系,其中学生的关系模式为:
学生(学号,姓名,班级,年龄),课程的关系模式为:
课程(课号,课程名,学时),其中两个关系模式的键分别是学号和课号,则关系模式选课可定义为:
选课(学号,【5】,成绩)。
(6)若x和y是两个整形变量,在执行了语句序列
x=5;y=6;y+=x--;
后,x+y的值为【6】。
(7)在执行语句序列
inti=0;doi++;while(i*i<10);
时,do后面的循环体语句i++被执行的次数为【7】。
(8)有如下的函数定义:
intXfun(int*a,intn){
intx=*a;
for(int*pa=a+1;pa<>
if(*pa>x)x=*pa;
returnx;
}
若执行了语句
intx[5]={23,46,78,55,16};
后,通过表达式Xfun(x,5)调用该函数,则得到的返回值为【8】。
(9)有如下的函数定义:
intXfun(intx){
inty=x;
{intx=10;y+=x;}
returnx+y;
}
通过表达式Xfun(5)调用该函数,则得到的返回值为【9】。
(10)假定Xcs是一个类,该类中一个成员函数的原型为“Xcs*abc();”,则在类外定义时对应的函数头为【10】。
(11)请将下面的类Date的定义补充完整,使得由语句
DateFirstDay;
定义的对象FirstDay的值为2010年1月1日。
classDate{
public:
Date(【11】):
year(y),month(m),day(d){}
private:
intyear,month,day;//依次表示年、月、日
};
(12)请将下面的程序补充完整,使得程序输出“飘是张娜的书”。
#include
usingnamespacestd;
classBook{
public:
Book(char*str){strcpy(title,str);}
【12】voidPrintInfo(){cout<
protected: chartitle[50];
};
classMyBook:
publicBook{
public:
MyBook(char*s1,char*s2="张娜"):
【13】{strcpy(owner,s2);}
virtualvoidPrintInfo(){cout<
private: charowner[10];
};
intmain(){
Book*prt=newMyBook("飘");
prt->PrintInfo();
return0;
}
(13)在有理数类Rational中重载插入运算符<<,以便按a/q形式输出。
请将<<运算符函数的定义补充完整。
classRational{
public:
Rational(intaa,intqq):
a(aa),q(qq){}
friend【14】operator<<(ostream&out,Rational&x)
{
return(out<<
}
private:
inta,q;
};
(14)下面的函数定义是某函数模板能够生成的函数实例
intsquare(intn){returnn*n;}
doublesquare(doublen){returnn*n;}
由此可知,该函数模板的定义是【15】