全国计算机等级考试二级.docx
- 文档编号:27838866
- 上传时间:2023-07-05
- 格式:DOCX
- 页数:24
- 大小:35.29KB
全国计算机等级考试二级.docx
《全国计算机等级考试二级.docx》由会员分享,可在线阅读,更多相关《全国计算机等级考试二级.docx(24页珍藏版)》请在冰豆网上搜索。
全国计算机等级考试二级
全国计算机等级考试二级C++语言程序设计
2008年4月笔试试卷
(考试时间90分钟,满分100分)
一、选择题(每小题2分,共70分)
(1)程序流程图中带有箭头的线段表示的是()。
A)图元关系
C)控制流
(2)结构化程序设计的基本原则不包括()。
A)多元性
C)模块化
(3)软件设计中模块划分应遵循的准则是()。
A)低内聚低耦合
B)高内聚低耦合
C)低内聚高耦合
D)高内聚高耦合
B)数据流
D)调用关系
B)自顶向下
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如下:
R
S
T
BCD
B
C
D
B
CD
a
b
0k1
1n1
f
a
n
3h2
0k1
2x1
a
0k1
由关系R和S通过运算得到关系T,则所使用的运算为()。
A)并
C)笛卡尔积
B)自然连接
D)交
(10)设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC
(学号,课号,成绩),则表SC的关键字(键或码)为()。
A)课号,成绩
C)学号,课号
(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)类模板的成员函数不能是模板函数
B)学号,成绩
D)学号,姓名,成绩
D)用类模板定义对象时,绝对不能省略模板实参
(16)下列有关C++流的叙述中,错误的是
A)C++操作符setw设置的输出宽度永久有效
B)C++操作符endl可以实现输出的回车换行
C)处理文件I/O时,要包含头文件fstream
D)进行输入操作时,eof()函数用于检测是否到达文件尾
(17)下列符号中能够作为C++标识符的是
A)constB)2a
C)_shape
(18)已知枚举类型声明语句为:
D)-count
enumCOLOR{WHITE,YELLOW,GREEN=5,RED,BLACK=10};
则下列说法中错误的是
A)枚举常量YELLOW的值为1
B)枚举常量RED的值为6
C)枚举常量BLACK的值为10D)枚举常量WHITE的值为1
(19)执行下列语句段后,输出字符“*”的个数是
for(inti=50;i>1;I-=2)cout<<'*';
A)24B)25
C)26
(20)有如下定义:
inta[5]={1,3,5,7,9},*p=a;
下列表达式中不能得到数值5的是
A)a[2]
C)*(p+2)
D)50
B)a[3]
D)*p+4
(21)已知函数f的原型是voidf(int*a,long&b);,变量v1、v2的定义是:
intv1;loongv2;
下列调用语句中正确的是
A)f(v1,&v2);
C)f(&v1,&v2);
(22)有如下类定义:
classPoint{
private;
staticinthow_many;
};
______how_many=0;
B)f(v1,v2);
D)f(&v1,v2);
要初始化Point类的静态成员how_many,下划线处应填入的内容是
A)ing
C)intPoint:
:
(23)在下列关键字中,不能用来表示继承方式的是
A)private
C)public
B)staticint
D)staticintPoint:
:
B)static
D)protected
(24)已知Value是一个类,Value是Value的一个对象。
下列以非成员函数形式重载的运算符函数原形中,正确的是
A)Valueoperator+(Valuev,inti);
C)Valueoperator+(Valuevinti=0);
(25)下面是一个模板声明的开始部分:
templute
由此可知
A)这可能是一个函数模板的声明
B)这可能是一个类模板的声明
B)Valueoperator+(Valuev=value,inti);
D)Valueoperator+(Valuev=value,inti=0);
C)这既可能是一个函数模板的声明,也可能是一个类模板的声明
D)这肯定是一个错误的模板声明
(26)有如下4个语句:
①cout<<'A'< ②cout< ③cout<<'A'< ④cout< 其中能显示A******B的是 A)①和③ C)②和③ (27)有如下类定义: classMyClass{ Intvalue; public; MyClass(intn): value(n){} intgerValue()const{returnvalue;} }; 则类MyClass的构造函数的个数是 A)1个 C)3个 (28)有如下类和对象的定义: classConstants{ public; staticdoublegetPI(){return3.1416;} }; Constantsconstants; 下列各组语句中,能输出3.1416的是 B)①和④ D)②和④ B)2个 D)4个 A)cout< : gerPI(); B)cout< C)cout< D)cout< : getPI(); (29)有如下程序: #include usingnamespacestd; classVAC{ public; intf()const{return3;} intf(){return5;} }; Intmain(){ VACv1; constVACv2; cout< feturn0; } 运行时的输出结果是 A)53B)35 C)55 (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;} }; D)33 已知x是一个Derived对象,则下列表达式中正确的是 A)x.value+x.getAmount() C)x.getData()-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; } 运行时的输出结果是 B)x.getData()-x.gctAmount() D)x.value+x.amount 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)*this B)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"< cout<<"Areais"< return0; } 请将程序补充完整,使程序在运行时输出: objectistriangle Areais6.3 (15)如下程序声明了一个使用两个通用数据类型的模板类dataClass,其中构造函数用于初始化两个数据成员,成员 函数show用于输出两个数据成员的数值。 #include usingnamespacestd; ___________ T1i; T2j; public; dataClass(T1aT2b){i=a;j=b;} voidshow(){cout< }; intmain(){ dataClass dataClass ob1.show(); ob2.show(); retum0; } 请将程序补充完整,使程序在运行时输出: 10,0.23 X,mydata 好好学www.HH资料最全的计算机等级考试网站 计算机等级考试频道网址: 2008年4月二级C++笔试试卷参考答案 一、选择题 (1)C) (6)D) (11)C) (16)A) (21)D) (26)C) (31)C) (2)A) (7)B) (12)B) (17)C) (22)C) (27)A) (32)D) (3)B) (8)C) (13)D) (18)D) (23)B) (28)D) (33)D) (4)B) (9)D) (14)A) (19)B) (24)B) (29)A) (34)B) (5)A) (10)C) (15)B) (20)B) (25)A) (30)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)template classdataClass (1)C)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 全国 计算机等级考试 二级
![提示](https://static.bdocx.com/images/bang_tan.gif)