2009年3月计算机二级考试c++真题及答案 - 下载本文

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;

6

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<

D)cout< 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;} };

7

int main()t TWO t(4) return 0 }

运行时的输出结果是

A)3 B)23 C)123 D)213 二、填空题(每空2分,共30分)

请将每一个空的正确答案写在答题卡【1】~【15】序号的横线上,答在试卷上不得分。 (1)假设用一个长度为50的数组(数组元素的下标从0到49)作为栈的存储空间,栈底指针bottom指向栈底元素,栈顶指针top指向栈顶元素,如果bottom=49,top=30(数组下标),则栈中具有【1】个元素。

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

(3)符合结构化原则的三种基本控制结构是:选择结构、循环结构和 【3】 。 (4)数据库系统的核心是 【4】 。

(5)在E-R图中,图形包括矩形框、菱形框、椭圆框。其中表示实体联系的是 【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]=\; 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); }

8

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

Monitor(char t):type (t){} void print( ) const

{cout<<\ private: char type; };

class Computer{ public:

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

{cout<<\();} 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 \;} virtual char* getVoice()const { return \;} };

Class Dog : public Animal { public:

char* getType ( ) const {return \;} char* getVoice ( ) const {return \ };

void type(Animal& a) {cout<

9

int main( ) {

Dog d; type (d);cout<<\;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) //重载赋值函数 Delele []a;

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;

10