2009年全国计算机等级考试二级C++笔试试题 下载本文

内容发布更新时间 : 2024/6/9 20:54:03星期一 下面是文章的全部内容请认真阅读。

2009年3月 二级C++真题及参考答案 一、选择题(每小题2分,共70分)

(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<

(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<

return 0; }

运行时的输出结果是 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 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<

下列选项中,输出结果为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);