2007年3月全国计算机等级考试二级C++笔试真题
一、选择题(每小题2分,共70分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(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)对下列二叉树
进行前序遍历的结果为
A)DYBEAFCZX
B)YDEBFZXCA
C)ABDYECFXZ
D)ABCDEFXYZ
(7)某二叉树中有n个度为2的结点则该二叉树中的叶子结点数为
A)n+1
B)n-1
C)2n
D)n/2
(8)在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是 。
A)井
B)交
C)投影
D)笛卡儿乘积
(9)在E-R图中,用来表示实体之间是联系的图形是 。
A) 矩形
B)椭圆形
C)菱形
D)平行四边形
(10)下列叙述中错误的是 。
A) 在数据库系统中,数据的物理结构必须与逻辑结构一致.
B)数据库技术的根本目标是要解决数据的共享问题
C)数据库设计是指在已有数据库管理系统的基础上建立数据库
D)数据库系统需要操作系统的支持
(11)为了取代C中带参数的宏,在C++中使用
A)重载函数
B)内联函数
C)递归函数
D)友元函数
(12)下列关于类定义的说法中,正确的是
A)类定义中包括数据成员和函数成员的声明
B)类成员的缺省访问权限是保护的
C) 数据成员必须被声明为私有的
D)成员函数只能在类体外进行定义
(13)下列关于派生类构造函数和析构函数的说法中,错误的是
A)派生类的构造函数会隐含调用基类的构造函数
B)如果基类中没有缺省构造函数,那么派生类必须定义构造函数
C)在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数
D)在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数
(14)通过运算符重载,可以改变运算符原有的
A)操作数类型
B)操作数个数
C)优先级
D)结合性
(15)有如下函数模板:
template T souare(T x) (retumx * x ;)
基中T是
A)函数形参
B)函数实参
C)模板形参
D)模板实参
(16)使用输入输出操作符setw,可以控制
A)输出精度
B)输出宽度
C)对齐方式
D)填充字符
(17)下列字符串中,不可以用作C++标识符的是
A)y_2006
B)____TEST__H
C)Retum
D)switch
(18)字面常量42、4.2、42L的数据类型分别是
A)long、double int
B)long、float、int
C)int、double、long
D)int、float、long
(19)执行下列语句段后,输出字符“*”的个数是
for(int i =50;I>1;— i )cout<<”*”
A)48
B)49
C)50
D)51
(20)有如下程序段
int i =0, j=1;
int &r=i ; // ①
r =j; //②
int*p=&i ; //③
*p=&r ; //④
基中会产生编译错误的语句是
A)④
B)③
C)②
D)①
(21)有如下函数定义:
void func (int a,int&b) {a++; b++;}
若执行代码段:
int x=0 ,y=1
func(x,y);
则变量x和y值分别是
A)0和1
B)1和1
C)0和2
D)1和2
(22)有如下程序:
#include
using namespace std;
class A{
public
static int a;
void init(){a=1;}
A(int a=2) {init();a++;}
};
int A:;a=0
A obj;
Int main()
{
cout< retum0;
}
运行时输出的结果是
A)0
B)1
C)2
D)3
(23)下列有关继承和派生的叙述中,正确的是
A) 派生类不能访问基类的保护成员
B)作为虚基类的类不能被实例化
C)派生类应当向基类的构造函数传递参数
D)虚函数必须在派生类中重新实现
(24)下列运算符中,不能被重载的是
A)&&
B)!=
C).
D)++
(25)下列函数模板的定义中,合法的是
A) template Tabs(T x) {return x <0 – x: x;}
B)template class Tabs(Tx){retumx<0 -x;x;}
C)template Tabs(T x){retum x<0 -x;x;}
D)template T abs(T x){returm x<0 -x;x;}
(26)在语句cin>>data;中,cin是
A)C++的关键字
B)类名
C)对象名
D)函数名
(27)有如下程序:
#include
using namespace std;
class test {
private:
int a;
public:
test(){cout<<”constructor”< test(int a){cout< test(const test&_test)
{
a=_testa;
cout<<”copy constructor”< }
test(){cout<<”destructor”< };
int main()
}
test A(3)
return0;
运行时输出的结果是
A)3
B)constructor
destruclor
C)copy constructor
D)3
dstructor destruclor
(28)若有如下类声明
class My Class {
public:
MyClass() {cout<<1;}
};
执行下列语句
MyClass a,b[2],*P[2];
以后,程序的输出结果是
A)11
B)111
C)1111
D11111
(29)有如下程序:
#include
using namespace std;
class point {
public:
static int number;
public:
point(){number++;
~point(){number-;}
};
imt point::number=0;
void main(){
point*ptr;
printA,B;
{
point*ptr_point=new point{3};
ptr=ptr_point;
}
pointC;
cout< delete[]ptr;
}
运行时输出的结果是
A)3
B)4
C)6
D)7