2010 年 3 月全国计算机二级 C++考试真题及答案
一、选择题(每小题 2 分,共 70 分)
下列各题 A)、B)、C)、D)四个选项中,只有一个选项是正确的。请将正确选项填涂在答题
卡相应位置上,答在试卷上不得分。
(1)下列叙述中正确的是
A)对长度为 n 的有序链表进行查找,最坏情况下需要的比较次数为 n
B)对长度为 n 的有序链表进行对分查找,最坏情况下需要的比较次数为(n/2)
C)对长度为 n 的有序链表进行对分查找,最坏情况下需要的比较次数为(log2n)
D)对长度为 n 的有序链表进行对分查找,最坏情况下需要的比较次数为(n log2n)
(2)算法的时间复杂度是指
A)算法的执行时间
B)算法所处理的数据量
C)算法程序中的语句或指令条数
D)算法在执行过程中所需要的基本运算次数
(3)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软
件的是
A)编辑软件
B)操作系统
C)教务管理系统
D)浏览器
(4)软件(程序)调试的任务是
A)诊断和改正程序中的错误
B)尽可能多地发现程序中的错误
C)发现并改正程序中的所有错误
D)确定程序中错误的性质
(5)数据流程图(DFD 图)是
A)软件概要设计的工具
B)软件详细设计的工具
C)结构化方法的需求分析工具
1
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 的操作是
2
A)选择
B)投影
C)交
D)并
(11)下列关于函数的描述中,错误的是
A)函数可以没有返回值
B)函数可以没有参数
C)函数可以是一个类的成员
D)函数不能被定义为模板
(12)若 MyClass 是一个类名,且有如下语句序列
MyClass c1,*c2;
MyClass *c3=new MyClass;
MyClass &c4=c1;
上面的语句序列所定义的类对象的个数是
A)1
B)2
C)3
D)4
(13)下列关于继承方式的描述中,错误的是
A)如果不显式地指定继承方式,缺省的继承方式是私有(private)
B)采用公有继承方式时,基类中的公有成员在派生类中仍然是公有成员
C)采用保护继承方式时,基类中的保护成员在派生类中仍然是保护成员
D)采用私有继承方式时,基类中的私有成员在派生类中仍然是私有成员
(14)将前缀运算符“--”重载为非成员函数,下列原型中,能正确用于类中说明的是
A)Decr& operator --(int);
B)Decr operator --( Decr&,int);
C)friend Decr& operator --(Decr&);
D)frlend Decr operator --(Decr&,int);
(15)若 MyTemp 是一个只有一个虚拟类型参数的类模板,且有如下语句序列
MyTempp2;
3
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)"b"是一个字符型常量
C)365 是一个 int 常量
D)3.1415926 是一个 double 常量
(19)若 x 和 y 是程序中的两个整型变量,则下列 if 语句中正确的是
A)if(x==0) y=1; else y=2;
B)if(x==0) then y=1 else y=2;
C)if(x==0) y=1 else y=2;
D)if x==0 y=1; else y=2;
(20)要定义整型数组 x,使之包括初值为 O 的三个元素,下列语句中错误的是
A)int x[3]={0,0,0};
B)int x[]={0};
C)static int x[3]={0};
4
D)int x[]={0,0,0};
(21)关于函数中的<返回类型>,下列表述中错误的是
A)<返回类型>中有可能包含关键字 int
B)<返回类型>中有可能包含自定义标识符
C)<返回类型>中有可能包含字符*
D)<返回类型>中可能包含[]
(22)要定义一个引用变量 p,使之引用类 MyClass 的一个对象,正确的定义语句是
A)MyClass p=MyClass;
B)MyClass p=new MyClass;
C)MyClass &p=new MyClass;
D) MyClass a,&p=a;
(23)有如下两个类定义
class XX{
private:
double x1;
protected:
double x2;
public:
double x3;
};
class YY:protected XX{
private:
double y1;
protected:
double y2;
public:
double y3;
};
在类 YY 中保护成员变量的个数是
A)1
5
B)2
C)3
D)4
(24)下列关于运算符重载的描述中,错误的是
A)可以通过运算符重载在 C++中创建新的运算符
B)赋值运算符只能重载为成员函数
C)运算符函数重载为类的成员函数时,第一操作数是该类对象
D)重载类型转换运算符时不需要声明返回类型
(25)下列关于类模板的描述中,错误的是
A)类模板的成员函数都是模板函数
B)可以为类模板参数设置默认值
C)类模板描述了一组类
D)类模板中只允许有一个类型参数
(26)下列控制格式输入输出的操作符中,能够设置浮点数精度的是
A)setprecision
B)setw
C)setfill
D)showpoint(27)下列程序段中包含 4 个函数,其中具有隐含 this 指针的是
int fun1();
class Test{
public:
int fun2();
friend int fun3();
static int fun4();
};
A)fun1
B)fun2
C)fun3
D)fun4
(28)有如下程序
6
#include
using namespace std;
class Test{
public:
Test(){ }
Test(const Test &t) {cout<<1;}
};
Test fun(Test &u) {Test t=u; return t;}
int main(){Test x,y; x=fun(y); return 0;}
运行这个程序的输出结果是
A)无输出
B)1
C)11
D)111
(29)有如下程序
#include
using namespace std;
class A{
public:
A(int i=0):r1(i) { }
void print() {cout<<'E’<
void print() const {cout<<'C'<
void print(int x) {cout <<'P'<
private:
int r1;
};
int main() {
A a1;
const A a2(4);
a1.print(2);
7
a1.print();
return 0;
}
运行时的输出结果是
A)P8-E4
B)P8-C16-
C)P0-E4-
D)P0-C16-
(30)下列代码声明了 3 个类
class Person{};
class Student:public Person{};
class Undergraduate:Student{};
下列关于这些类之间关系的描述中,错误的是
A)类 Person 是类 Undergraduate 的基类
B)类 Undergraduate 从类 Student 公有继承
C)类 Student 是类 Person 的派生类
D)类 Undergraduate 是类 Person 的派生类
(31)有如下程序
#include
using namespace std;
Class Base{
public:
Base(int x=0):valB(x) {cout<
~Base() {cout<
private:
int valB;
};
class Derived:public Base{
public:
8