0811年计算机二级C++笔试题及答案.docx
《0811年计算机二级C++笔试题及答案.docx》由会员分享,可在线阅读,更多相关《0811年计算机二级C++笔试题及答案.docx(89页珍藏版)》请在冰豆网上搜索。
0811年计算机二级C++笔试题及答案
2008年4月全国计算机等级考试二级C++笔试试题及答案
窗体顶端
窗体底端
(考试时间90分钟,满分100分)
一、选择题(每小题2分,共70分)
(1)程序流程图中带有箭头的线段表示的是()。
A)图元关系B)数据流
C)控制流D)调用关系
(2)结构化程序设计的基本原则不包括()。
A)多元性B)自顶向下
C)模块化D)逐步求精
(3)软件设计中模块划分应遵循的准则是()。
A)低内聚低耦合B)高内聚低耦合
C)低内聚高耦合D)高内聚高耦合
(4)在软件开发中,需求分析阶段产生的主要文档是()。
A)可行性分析报告
B)软件需求规格说明书
C)概要设计说明书D)集成测试计划
(5)算法的有穷性是指()。
A)算法程序的运行时间是有限的
B)算法程序所处理的数据量是有限的
C)算法程序的长度是有限的
D)算法只能被有限的用户使用
(6)对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是()。
A)快速排序B)冒泡排序
C)直接插入排序D)堆排序
(7)下列关于栈的叙述正确的是()。
A)栈按“先进先出”组织数据
B)栈按“先进后出”组织数据
C)只能在栈底插入数据
D)不能删除数据
(8)在数据库设计中,将E-R图转换成关系数据模型的过程属于()。
A)需求分析阶段B)概念设计阶段
C)逻辑设计阶段D)物理设计阶段
(9)有三个关系R、S和T如下:
RST
BCD
a0k1
b1n1
由关系R和S通过运算得到关系T,则所使用的运算为()。
A)并B)自然连接C)笛卡尔积D)交
(10)设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC
(学号,课号,成绩),则表SC的关键字(键或码)为()。
A)课号,成绩B)学号,成绩
C)学号,课号D)学号,姓名,成绩
(11)下列有关函数重载的叙述中,错误的是
A)函数重载就是用相同的函数名定义多个函数
B)重载函数的参数列表必须不同
C)重载函数的返回值类型必须不同
D)重载函数的参数可以带有默认值
(12)下列有关类成员的叙述中,正确的是
A)友元函数是类的成员函数
B)类成员的默认访问权限是私有的
C)类成员函数必须声明为公有的
D)类的静态数据成员不能是常成员
(13)下列有关类继承的叙述中,错误的是
A)继承可以实现软件复用
B)虚基类可以解决由多继承产生的二义性问题
C)派生类构造函数要负责调用基类的构造函数
D)派生类没有继承基类的私有成员
(14)下列有关运算符重载的叙述中,正确的是
A)运算符重载是多态性的一种表现
B)C++中可以通过运算符重载创造新的运算符
C)C++中所有运算符都可以作为非成员函数重载
D)重载运算符时可以改变基结合性
(15)下列有关模板的叙述中,正确的是
A)函数模板不能含有常规形参
B)函数模板的一个实例就是一个函数定义
C)类模板的成员函数不能是模板函数
D)用类模板定义对象时,绝对不能省略模板实参
(16)下列有关C++流的叙述中,错误的是
A)C++操作符setw设置的输出宽度永久有效
B)C++操作符endl可以实现输出的回车换行
C)处理文件I/O时,要包含头文件fstream
BCD
a0k1
BCD
f3h2
a0k1
n2x1
D)进行输入操作时,eof()函数用于检测是否到达文件尾
(17)下列符号中能够作为C++标识符的是
A)constB)2aC)_shapeD)-count
(18)已知枚举类型声明语句为:
enumCOLOR{WHITE,YELLOW,GREEN=5,RED,BLACK=10};
则下列说法中错误的是
A)枚举常量YELLOW的值为1B)枚举常量RED的值为6
C)枚举常量BLACK的值为10D)枚举常量WHITE的值为1
(19)执行下列语句段后,输出字符“*”的个数是
for(inti=50;i>1;I-=2)cout<<'*';
A)24B)25
C)26D)50
(20)有如下定义:
inta[5]={1,3,5,7,9},*p=a;
下列表达式中不能得到数值5的是
A)a[2]B)a[3]
C)*(p+2)D)*p+4
(21)已知函数f的原型是voidf(int*a,long&b);,变量v1、v2的定义是:
intv1;loongv2;
下列调用语句中正确的是
A)f(v1,&v2);B)f(v1,v2);
C)f(&v1,&v2);D)f(&v1,v2);
(22)有如下类定义:
classPoint{
private;
staticinthow_many;
};
______how_many=0;
要初始化Point类的静态成员how_many,下划线处应填入的内容是
A)ingB)staticint
C)intPoint:
:
D)staticintPoint:
:
(23)在下列关键字中,不能用来表示继承方式的是
A)privateB)static
C)publicD)protected
(24)已知Value是一个类,Value是Value的一个对象。
下列以非成员函数形式重载的运算符函数原形中,正确的是
A)Valueoperator+(Valuev,inti);B)Valueoperator+(Valuev=value,inti);
C)Valueoperator+(Valuevinti=0);D)Valueoperator+(Valuev=value,inti=0);
(25)下面是一个模板声明的开始部分:
templutedouble__
由此可知
A)这可能是一个函数模板的声明
B)这可能是一个类模板的声明
C)这既可能是一个函数模板的声明,也可能是一个类模板的声明
D)这肯定是一个错误的模板声明
(26)有如下4个语句:
①cout<<'A'<②cout<③cout<<'A'<④cout<其中能显示A******B的是
A)①和③B)①和④
C)②和③D)②和④
(27)有如下类定义:
classMyClass{
Intvalue;
public;
MyClass(intn):
value(n){}
intgerValue()const{returnvalue;}
};
则类MyClass的构造函数的个数是
A)1个B)2个
C)3个D)4个
(28)有如下类和对象的定义:
classConstants{
public;
staticdoublegetPI(){return3.1416;}
};
Constantsconstants;
下列各组语句中,能输出3.1416的是
A)cout<getPI();和cout<:
gerPI();
B)cout<C)cout<getPI();和cout<getPI();
D)cout<:
getPI();
(29)有如下程序:
#include
usingnamespacestd;
classVAC{
public;
intf()const{return3;}
intf(){return5;}
};
Intmain(){
VACv1;
constVACv2;
cout<feturn0;
}
运行时的输出结果是
A)53B)35
C)55D)33
(30)有如下类声明:
classBase{
protected;
intamount;
public;
Base(intn=0):
amount(n){}
intgetAmount()const{retumamount;}
};
classDerived:
publicBase{
protected;
intvalue;
public;
Derived(intm,intn):
value(m).Base(n){}
IntgetData()const{returnvalue+amount;}
};
已知x是一个Derived对象,则下列表达式中正确的是
A)x.value+x.getAmount()B)x.getData()-x.gctAmount()
C)x.getData()-x.amountD)x.value+x.amount
(31)有如下程序:
#include
usingnamespacestd;
classBase{
intx;
public;
Base{intn=0};x(n){cout<IntgetX()const{returnx;}
};
classDerivedpublicBase{
inty;
public;
Derived(intm,intn):
y(m),Base(n){cout<Derived(intm):
y(m){cout<};
intmain(){
Deriveddl(3),d2(5,7);
Return0;
}
运行时的输出结果是
A)375B)357 C)0375D)0357
(32)下列有关抽象类和纯虚函数的叙述中,错误的是
A)拥有纯虚函数的类是抽象类,不能用来定义对象
B)抽象类的派生类若不实现纯虚函数,它也是抽象类
C)纯虚函数的声明以“=0;”结束
D)纯虚函数都不能有函数体
(33)有如下程序:
#include
Usingnamespacestd;
ClassAmount{
intamount;
public;
Amount(intn=0):
amount(n){}
IntgetAmount()const{returnamount;}
Amount&operator+=(Amounta){
amount+=a.amount;
return;
}
};
intmain(){
Amountx(3),y(7);
x+=y;
cout<return0;
}
已知程序的运行结果是10,则下划线处缺失的表达式是
A)*thisB)this
C)&amountD)amount
(34)下列语句分别是不同程序中的第一个输入输出语句,若去掉其中的“<A)cout<B)cout<C)cout<D)cout<(35)有如下程序:
#include
usingnamespacestd;
classGA{
public;
virtualintf(){retuml;}
};
classGB:
publicGA{
public;
virtualintf(){return2;}
};
voidshow(GAg){cout<voiddisplay(GA&g){cout<intmain(){
GAa:
show(a);display(a);
GBb:
show(b);display(b);
retum0;
}
运行时的输出结果是
A)1111B)1211
C)1112D)1212
二、填空题(每空2分,共30分)
(1)测试用例包括输入值集和值集。
(2)深度为5的满二叉树有个叶子结点。
(3)设某循环队列的容量为50,头指针front=5(指向队头元素的前一位置),尾指针rear=29(指向队尾元素),则该
循环队列中共有个元素。
(4)在关系数据库中,用来表示实体之间联系的是。
(5)在数据库管理系统提供的数据定义语言、数据操纵语言和数据控制语言中,负责数据的模式定义与数据
的物理存取构建。
(6)在面向对象的程序设计中,将数据和处理数据的操作封装成一个整体就定义了一种事物的类型,称作“类”。
类
是一种抽象的概念,属于该类的一个实例叫做“___________”。
(7)指针数组是由___________构成的数组。
(8)如果使用数组名称为函数参数,形实结合时,传递的是___________。
(9)在类的对象被创建的时候,___________函数会被自动调用。
(10)在类中,___________成员为类的所有对象所共享。
(11)有如下程序:
#include
usingnamespacestd;
classBase{
public;
intm,n;
};
classDerived1:
___________Base{};
classDerived2:
publicDerived1{
public:
voidSetMN(intM,intN){M=M;n=N;}
intGetSumMN(){retum(m+n);}
};
intmain(){
Derived2objD;
objD.SetMN(3,4);
cout<<"M+N="<retum0;
}
编译时只有“cout<<"M+N="<划线处使用的关键字是什么。
(12)有如下程序:
#include
usingnamespacestd;
classBase{
intb;
public;
Base(inti){b=i;}
voiddisp(){cout<<"Base:
b="<
};
classbasel;virtualpublicBase{
public;
Base1(inti):
Base(i){}
};
classBase2:
virtualpublicBasc{
public;
Base2(inti):
Base(i){}
};
classDerived:
publicBase2.publicBase1{
intd;
public;
Derived(intI,intj):
Base1(j),Base2(j),___________
{d=i;}
voiddisp(){cout<<"Derived:
d="<};
intmain(){
DerivedobjD(1,2);objD.disp();
objD.Basce:
:
disp();
objD.Basce1:
:
disp();
objD.Basce2:
:
disp();
return0;
}
请将程序补充完整,使程序在运行时输出:
Derived:
d=1Base:
b=2Base:
b=2Base:
b=2
(13)如下程序声明了一个电话号码类PhoneNumber,重载了流插入运算符<<,以便于电话号码的输出。
请将程序补
充完整。
#include
#include
#include
usingnamespacestd;
classPhoneMumber{
public;
voidsetNumber(stringnumber){this->number=number;}
//重载流插入操作符
friend___________(ostream&output,constPhoneNumber&num)
{output<private;
stringnumber;
};
intmain(){
PhoneNumberphone;
phone.setNumber("8008100598");
cout<<"Thephonenumberis:
"<return0;
}
(14)如下程序声明了一个二维图形类TwoDShape,从其派生出矩形类Rec。
#include
#include
usingnamespacestd;
classTwoDShape{//二维图形类
charname[20];
public;
TwoDShape(char*n="unknown"){
strcpy(name,n);
}
char*getNa:
ne(){returnname;}
___________=0;
};
classRec:
publicTwoDShape{
doublewidth,height;
public;
Rec(doublew=0.0,doubleh=0.0):
TwoDShape("rectamgle")
{width=w;height=h;}
doublegetWidth(){returnwidth;}
doublegetHeight(){returnheight;}
doublearea(){returnwidth*height;}
};
intmain(){
TwoDShape*shape;
shape=newRec(2.1,3.0);
cout<<"objectis"<getName()<<"\n";
cout<<"Areais"<area()<<"\n";
return0;
}
请将程序补充完整,使程序在运行时输出:
objectistriangle
Areais6.3
(15)如下程序声明了一个使用两个通用数据类型的模板类dataClass,其中构造函数用于初始化两个数据成员,成员
函数show用于输出两个数据成员的数值。
#include
usingnamespacestd;
___________
T1i;
T2j;
public;
dataClass(T1aT2b){i=a;j=b;}
voidshow(){cout<
};
intmain(){
dataClassob1(10,0.23);
dataClassob2('X',"mydata");
ob1.show();
ob2.show();
retum0;
}
请将程序补充完整,使程序在运行时输出:
10,0.23
X,mydata__
2008年4月二级C++笔试试题答案
一、选择题
(1)C
(2)A(3)B)(4)B)(5)A)(6)D(7)B(8)C(9)D)(10)C)(11)C(12)B(13)D(14)A(15)B)(16)A(17)C(18)D(19)B(20)B)(21)D(22)C(23)B(24)B(25)A)(26)C)27)A(28)D(29)A(30)B)(31)C(32)D(33)D(34)B(35)C)
二、填空题
(1)输出
(2)16(3)24(4)关系(5)数据定义语言(6)对象(7)指针或指针变量(8)地址(9)构造(10)静态(11)private(12)Base(j)(13)PhoneNumberoperator<<(14)virvaldoublearea()(15)templateclassdataClass
2008年9月计算机等级考试
二级C++笔试试题
一、选择题(每小题2分,共70分)
(1)一个栈的初始状态为空。
现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是()。
A)123456ABCDEB)EDCBA54321
C)ABCDE12345D)54321EDCBA
(2)下列叙述中正确的是()。
A)循环队列有队头和队尾两个指针,因此,循环队列是非线性结构
B)在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况
C)在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况
D)循环队列中元素的个数是由队头指针和队尾指针共同决定
(3)在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是()。
A)O(n) B)O(n2)
C)O(log2n)D)O(nlog2n)
(4)下列叙述中正确的是()。
A)顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的
B)顺序存储结构只针对线性结构,链式存储结构只针对非线性结构
C)顺序存储结构能存储有序表,链式存储结构不能存储有序表
D)链式存储结构比顺序存储结构节省存储空间
(5)数据流图中带有箭头的线段表示的是()。
A)控制流C)模块调用
B)事件驱动D)数据流
(6)在软件开发中,需求分析阶段可以使用的工具是()。
A)N-S图B)DFD图(数据流图)
C)PAD图D)程序流程图
(7)在面向对象方法中,不属于“对象”基本特点的是()。
A)一致性B)分类性
C)多态性D)标识唯一性
(8)一间宿舍可住多个学生,则实体宿舍和学生之间的联系是()。
A)一对一B)一对多
C)多对一D)多对多
(9)在数据管理技术发展的三个阶段中,数据共享最好的是()。
A)人工管理阶