2007年9月全国计算机等级考试二级C++笔试试题及答案

2007年9月全国计算机等级考试二级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

8)字面常量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

(30)如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员,有如下程序,没有使用多态机制。

#include

using namespace std;

class Base{

int a,b;

public:

Bace(int x ,int y) { a=x; b=y;}

Void show(){ cout< }

clsaa Derived:public Base {

int c ,d;

public:

Derived(int x,int y,int z,int m):Base(x,y){c=z; d=m;}

Void show(){ cout< };

int main()

{

Base B1(50,50),*pb;

Derived DI(10,20,30,40);

Pb=&D1;

Pb->show();

Return 0;

}

运行时输出的结果是

A)10,20

B)30,40

C)20,30

D)50,50

(31)有如下程序:

#include

using namespace std;

class A

{

public;

A(int i ){x= i ;}

Void sispa(){cout< Private:

int x ;

};

class B;publicA

{

public;

B(int i):A(i +10) {x =i ;}

voud dispb() {dispa();cout< Private:

Int x;

};

int main()

{

B b(2);

b.dispb()

retum 0:

}

运行时输出的结果是

A)10,2

B)12,10

C)12,2

D)2,2

(32)虚函数支持多态调用,一个基类的指针可以指向派生类的对象,而且通过这样的指针调用虚函数时,,被调用的是指针所指的实际对象的虚函数,而非虚函数不支持多态调用。有如下程序:

#include

using namespace std;

class Base

{

public:

virtual void f(){cout<<”f0+”;}

void g() {cout<<”g0+”;}

};

class Derived:public Base

{

public:

void f() {cout<<”f+”;}

void g() {cout<<”g+”;}

};

int main()

{

Derived d;

Base*p=&d;

p->f(); p->g();

return 0:

}

运行时输出的结果是

A)f+g+

B)f0+g+

C)f+g0+

D)f0+g0+

(33)下面程序中对一维坐标点类Point进行运算符重载

R> #include

using namespace std;

class point {

public:

point (int vaI) {x=val;}

point& operator++(){x++;retum*this;}

print operator++(int) {point old=*this,++(*this);retum old;} int GetX() const {retum x;}

private:

int x;

};

int main()

{

point a(10);

cout<<(++a).GetX();

cout< retum();

}

编译和运行情况是

A)运行时输出1011

B)运行时输出1111

C)运行时输出1112

D)编译有错

(34)有如下程序:

#include

using namespace std;

int main()

{

char str[100],*p;

cout<<”please input a string:”;

cin>>str;

p=str;

for(int i =0;*p!=”\0”;p++, i ++);

cout<< i < retum 0;

}

运行这个程序时,若输入字符串为

abcdefg abcd

则输出结果是

A)7

B)12

C)13

D)100

(35)有如下程序::

#include

using namespace std:

class Sample

{

friend long fun (Sample s);

public:

Sample (long a ){x=a;}

Private:

long x;

};

long fun (Sample s)

{

if(s.x<2)retum 1;

retum s.x*fun(Sample(s.x-a));

}

int main()

{

int sum=0

for(int i =0; i <6; i ++) { sum+=fun(Sample( i );) }

cout< retum 0;

}

运行时输出的结果是

A)120

B)16

C)154

D)34

二、填空题(每空2分,共30分)

请将每一个空的正确答案写在答题卡【1】~【15】序号的横线上,答在试卷上不得分。

(1)在深度为7的满二叉树中,度为2的结点个数为【1】。

(2)软件测试分为白箱(盒)测试和黑箱(盒)测试,等价类划分法属于【2】测试。

(3)在数据库系统中,实现各种数据管理体制功能的核心软件称为【3】。

(4)软件生命周期可分为多个阶段,一般分为定义阶段、开发和维护阶段。编码和测试属于【4】阶段。

(5)在结构化分析使用的数据流图(DFD)中,利用【5】对其中的图形元素进行确切解释。

(6)C++中只有两个逻辑常量:true和【6】。

(7)若要访问指针变量p所指向的数据,应使用表达式【7】。

(8)已知一个函数的原型是:

int fn(double x);

若要以5.27为实参调用该函数,应使用表达式【8】。

(9)有如下定义:

class MA{

int value;

public:

MA(int n=0):valut(n){}

};

MA*ta,tb;

其中MA类的对象名标识符是【9】。

(10)如下类定义中包含了构造函数和拷贝数的原型声明请在横线处写正确的内容,使拷贝构造函数的声明完整。

Class my Class{

Private:

Int data:

Public:

MyClass(int value); //构造函数

> MyClass(const 【10】 another Object); //拷贝构造函数

}

(11)用来派生新类的称为【11】,而派生出的新类称为它的子类或派生类。

(12)有如下程序:

#include

using namespace std;

clsaa CA{

public:

CAD{cout< };

class CB ;private CA{

public;

CB(){cout< };

int main(){cout< };

int main(){

CA a;

CB b;

retum0;

}

这个程序的输出结果是【12】。

(13)若将一个二元运算符重载为类的成员函数,其形参个数应该是【13】个。

(14)有如下程序:

#include

using namespace std;

class DA{

int k;

public:

DA(int x=1): k (x){}

~DA(){cout< };

int main(){

DA d[]={DA(3),DA(3),DA(3)};

DA* p=new DA[2];

delete[]p;

return0;

}

这个程序的输出结果是【14】。

(15)C++语言中的多态性分为编译时的多态性和【15】时的多态性。选择题:

1-5BDACD

6-10CABCA

11-15BADAC

16-20BCDBA

21-25CCCCA

26-30CDBDA

30-35CBBBC

填空:

1、63

2、黑盒

3、DBMS

4、开发

5、数据字典

6、false

7、 *P

8、fn(5.27)

9、tb

10、myclass&

11、基类

12、AAB

13、1个

14、11333

15、运行

[ 结束 ]

PS;本文档由北大青鸟广安门收集自互联网,仅作分享之用。

相关推荐
相关主题
热门推荐