文档库 最新最全的文档下载
当前位置:文档库 › 2009年3月全国二级C++笔试试题

2009年3月全国二级C++笔试试题

2009年3月全国计算机等级考试二级C++语言

程序设计笔试试题

一、选择题(每小题2分,共70分)

(1)下列叙述中正确的是

A)栈是“先进先出”的线性表

B)队列是“先进后出”的线性表

C)循环队列是非线性结构

D)有序线性表既可以采用顺序存储结构,也可以采用链式存储结构

(2)支持子程序调用的数据结构是

A)栈

B)树

C)队列

D)二叉树

(3)某二叉树有5个度为z的结点,则该二叉树中的叶子结点数是

A)10

B)8

C)6

D)4

(4)下列排序方法中,最坏情况下比较次数最少的是

A)冒泡排序

B)简单选择排序

C)直接插入排序

D)堆排序

(5)软件按功能可以分为: 应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是

A)编译程序

B)操作系统

C)教务管理系统

D)汇编程序

(6)下面叙述中错误的是

A)软件测试的目的是发现错误并改正错误

B)对被调试的程序进行“错误定位”是程序调试的必要步骤

C)程序调试通常也称为Debug

D)软件测试应严格执行测试计划,排除测试的随意性

(7)耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是 A)提高耦合性降低内聚性有利他哦高模块的独立性

B)降低耦合性提高内聚性有利于提高模块的独立性

C)耦合性是指一个模块内部各个元索间彼此结合的紧密程度

D)内聚性是指模块间互相连接的紧密程度

(8)数据库应用系统中的核心问题是

A)数据库设计

B)数据库系统设计

C)数据库维护

D)数据库管理员培训

(9)有两个关系R, S如下:

由关系R通过运算得到关系S,则所使用的运算为

A)选择

B)投影

C)插入

D)连接

(10)将E-R图转换为关系模式时,实体和联系都可以表示为

A)属性

B)键

C)关系

D)域

(11)对C++编译器区分重载函数无任何意义的信息是 A)参数类型

B)参数个数

C)返回值类型

D)常成员函数关键字coast

(12)有如下类定义和变量定义:

class A{

publie:

A(){data=0;}

~A(){}

int GetData ( ) coast { return data;}

void SetData(int n) {data=n;}

private:

int data;

};

ccnst A a;

A b;

下列函数调用中错误的是

A)a .GetData();

B)a .SetData(10);

C)b .GetData();

D)b .SetData(10);

(13)有如下类定义和变量定义:

class Parents{

public:

int publicuata;

private:

int privateData;

};

class ChildA:public Parents{/*类体略*/};

class ChildB:private Parents{/*类体略*/);

ChildA a;

ChildBb;

下列语句中正确的是

A)cout<

B)cout<

C)cout<

D)cout<

(14)运算符重载时不需要保持的性质是

A)操作数个数

B)操作数类型

C)优先级

D)结合性

(15)下列关于函数模板的描述中,错误的是

A)从模板实参表和从模板函数实参表获得信息矛盾时,以模板实参的信息为准

B)对于常规参数所对应的模板实参,任何情况下都不能省略

C)虚拟类型参数没有出现在模板函数的形参表中时,不能省略模板实参

D)模板参数表不能为空

(16)要建立文件流并打开当前目录下的文件file.dat用于输入,下列语句中错误的是 A)ifstream fin=ifstream.open(“file.dat”);

B)ifstream*fir.=new ifstream(“file.dat”);

C)ifstream fin; fin.open(“file.dat”);

D)ifstream *fin=new ifstream( );fin一>open(“file.dat”);

(17)下列描述中,不属于面向对象思想主要特征的是

A)封装性

B)跨平台性

C)继承性

D)多态性

(18)有如下程序段:

Tnt i=4;int j=l;

int main(){

int i=8,j=i;

cout<

}

运行时的输出结果是

A)44

B)41

C)88

D)81

(19)有如下程序段:

int i=5;

while(int i=0){cout《'*';i--;}

运行时输出“*”的个数是

A)0

B)1

C)5

D)无穷

(20)己知有数组定义

char a[3][4];

下列表达式中错误的是

A)a[2]=“WIN”

B)strcpy(a[2],“WIN”)

C)a [2][3]='W'

D)a[0][1]=a[0][1]

(21)已知函数fun的原型为

int fun(int,int,int);

下列重载函数原型中错误的是

A)char fun(int,int);

B)double fun(int,int,double);

C)int fun(int,char*);

D)float fun (int, int, int);

(22)建立一个类对象时,系统自动调用

A)析构函数

B)构造函数

C)静态函数

D)友元函数

(23)通过派生类的对象可直接访问其

A)公有继承基类的公有成员

B)公有继承基类的私有成员

C)私有继承基类的公有成员

D)私有继承基类的私有成员

(24)己知表达式++a中的“++”是作为成员函数重载的运算符,则与十+a等效的运算符函数调用形式为

A)a .orerator++(1)

B)operator++(a)

C)operator++(a,l)

D)a.operator++( )

(25)在定义一个类模板时,模板形参表是用一对括号括起来的,所采用的括号是 A)( )

B)[ ]

C)< >

D){ }

(26)当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为

A)ios_base::in

B)ios_base::in|ios_base::out

C)ios_base::out

D)ios_base::in&ios_base::out

(27)有如下程序:

#include

#include

using namespace std;

class XCD{

char* a;

int b;

public:

XCD(char* aa, int bb){

a=new char[strlen(aa)+1];

strcpty(a,aa);

b=bb;

}

Char* Geta (){return a;)

int Getb(){ return b;}

};

int main(){

char *pl=“abcd”,*p2=“weirong”;

int dl=6, d2=8;

XCD x(pl,dl),Y(p2,d2);

cout<

}

运行时的输出结果是

A)12

B)16

C)14

D)11

(28)有如下程序:

#include

#include

using namespace std;

class XCF{

int a;

public:

XCF(int aa=0):a (aa){cout<<“1”;}

XCF(XCF& x){a=x .a; cout<<“2”;)

~XCF(){cout<

int Geta(){return a;}

};

int main(){

XCF dl(5),d7 (dl);

XCF *pd=new XCF(8);

cout<Geta();

delete pd;

return 0;

}

运行时的输出结果是

A)121SS88

B)12188SS

C)12185

D)128512

(29)已知类MyClass声明如下:

class MyClass{

int n;

public;

MyClass(int k):n(k){}

int getValue()const{return n;}

};

在下列数组定义中正确的是

A)MyClass x1[2];

B)MyClass x2[2]={new MyClass(1),new MyClass(2)};

C)MyClass *x3[2];

D)MyClass *x4[2]={MyClass(1),MyClass(2)}; (30)有如下程序:

#include

using namespace std;

class AA{

lilt k;

protected:

int n;

void setK(int k){ this->k=k;}

public:

void setN(int n){ this->n=n;}

};

class BB: public }{/*类体略*/};

int main(){

BB x_ ; //1

x .n=1; //2

x.setN (2); //3

x.k=3; //4

x .setK(4);

return 0;

}

在标注号码的四条语句中正确的是

A)1

B)2

C)3

D)4

(31)有如下类定义:

class XX{

int xx;

public:

XX():xx(0){cout<<' A';}

XX(int n):xx ( n){tout<<' B';}

};

Class YY:public XX{

Int yy;

public:

YY():yy ( 0){cout+yy;}

YY(int n):XX(n+1),yy(n){cout<

YY (int m, int n):XX (m),yy(n){cout<

下列选项中,输出结果为A0的语句是

A)YY y1(0,0);

B)YY y2(1);

C)YY y3(0);

D)YY y4;

(32)有如下程序:

#include

Using namespace std;

class A{

public:

virtual void f(){cout+1;}

void g(){cout<<2;}

};

class B:public A{

public:

virtual void f(){cout<<3;}

void g(){ecut<<4;}

};

void show(A &a){a.f();a.g( );}

int main(){

B b;

show(b);

return 0;

}

运行时的输出结果是

A)12

B)34

C)14

D)32

(33)有如下程序:

#include

using namespace std;

class Pair{

int m;

int n;

public:

Pair(int i,int j):m(i),n(j){}

boot operator >(pair p)const; //须在类体外给出定义

};

int main(){

Pair Al(3,4),p2(4,3);p3(4,5);

Cout<<(pl>p2)<<(P2>P1)<<(p2>p3)<<(p3>p2);

return 0;

}

运算符函数。operator>的功能是比较两个Pair对象的大小,当左边对象大时,返回true,否则返回false。比较规则是首先比较两对象的m成员,m大者为大;当m相等时比较n,n大者为大。程序输出0101,下列对运算符重载函数的正确定义是

A)bool Pair::operator>(Pair p)const

{if (m!=p.m) return m>p.m; return n>p.n;}

B)bool Pair:;operator>(Pair p)

{if (m!=p.m) return m>p.m; return n>p.n;}

C)bool Pair::operator>(Pair p)const

{if (m>p.m) return true; return n>p.n;}

D)bool Pair:;operator>(Pair p)

{if (m>p.m) return true; return n>p.n;}

(34)假定下列语句都是程序运行后首次执行的输出语句,其中输出结果与另外三条语句不同的语句是

A)cout<

B)cout<

C)cout<<123<

D)cout<

(35)有如下程序:

#include

using namespace std;

class ONE{

int c;

public:

ONE():c(0){cout<<1;}

ONE(int n):c (n){cout<<2;}

};

class TWO{

ONE onel;

ONE one2;

public:

TWO(int m):one2(m){cout<<3;}

};

int main()t

TWO t(4)

return 0

运行时的输出结果是

A)3

B)23

C)123

D)213

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

(1)假设用一个长度为50的数组(数组元索的下标从0到49)作为栈的存化空间,栈底指针bottom指间 栈底元素,栈顶指针top指向栈顶元素,如果bottom=49,top=30(数组下标),则栈中具有【1】 个元素。

(2)软件测试可分为白盒测试和黑盒测试。基本路径测试属于【2】测试。

(3)符合结构化原则的三种基本控制结构是:选择结构、循环结构和【3】。

(4)数据库系统的核心是【4】。

(5)在E-K图中,图形包括矩形框、菱形框、椭圆框。其中表示实体联系的是【5】框。

(6)有如下程序段:

int x=1,Y=2,z=3;

x=x^z;

y=y^z;

z=x^y;

cout<

执行这个程序段的输出是【6】。

(7)有如下程序段:

fer(int i=1; i<=50;i++){

if(i%3 != 0)

continue;

else

if(i%5!=0)

continue;

tout<

执行这个程序段的输出是【7】。

(8)有如下程序段:

Char c [20]=“examination”;

c[4]=0;

cout<

执行这个程序段的输出是【8】。

(9)下面的函数利用递归实现了求1+2+3+……+n的功能:

int sum(int n){

if(n==0)

return 0;

else

return n+sum(n-1);

}

在执行sum(10)的过程中,递归调用sum函数的次数是【9】。 (10)非成员函数应该声明为类【10】函数才能访问该类的私有成员。 (11)有如下程序:

#include

using namespace std;

class Monitor{

public:

Monitor(char t):type (t){}

void print( ) const

{cout<<“The type of monitor is”<

private:

char type;

};

class Computer{

public:

Computer(int i,char c): 【11】{}

void Print()const

{cout<<“The computer is”<

private:

int id;

Monitor mon;

};

const Computer myComputer(101,'B‘);

myComputer .Print();

return 0;

}

请将程序补充完整,使程序在运行时输出:

The computer is 101

'The type of monitor i.s 8

(12)有如下程序:

#include

using namespace std

class Animal{

public:

virtual char* getType()const { return “Animal”;}

virtual char* getVoice()const { return “Voice”;}

};

Class Dog : public Animal {

public:

char* getType ( ) const {return “Dog”;}

char* getVoice ( ) const {return “Woof”}

};

void type(Animal& a) {cout<

void speak(Animal a) {cout<

int main( ) {

Dog d; type (d);cout<<“ speak”;speak(d);cout<

}

运行时的输出结果是【12】。

(13)补充完整下面的类定义:

const double PI=3 .14;

class Circle{ //圆形物体的抽象基类

protected:

double r; //半径

public:

Circle(double radius=0):r(radius){}

【13】;//计算圆形物体表面积的纯虚函数声明

};

class Cylinder:public Circle { //圆柱体类

double h; //高度

public:

Cylindr(double radius=0, doubli height=0):

Circle(radius),h (height){}

Virtual double Area() { //计算圆柱体的表面积

return 2*PI*r*(r+h);

}

};

(14)补充完整下面的类定义:

class XCH{

char* a;

public:

XCH(char* as) { //构造函数

a=new char[strlen(aa)+1];

strcpy(a,aa);

}

XCH& operator=(const XCH& x) //重载赋值函数

A=new char[strlen(x.a)+l];

strcpy(a, x .a)

【14】;

}

~XCH() {delete []a;}

};

(15)补充完整下面的模板定义:

template //Type为类型参数

class Xtwo{ //由两个Type类型的数据成员构成的模板类 Type a;

Type b;

public:

Xtwe(Type aa=0, Type bb=0):a(aa),b(bb){}

int Ccmpare (){//比较a和b的大小

if (a>b)returm 1;

else if(a==b) return 0;

else return -1;

}

Type Snm() {return a+b;} //返回a和b之和

Type Mult(); //函数声明,返回a和b之乘积

};

Template

【15】::Mult(){return a*b;} //Mult 函数的类外定义

相关文档
相关文档 最新文档