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

D)以ios_base::out模式打开的文件不存在时,将自动建立一个新文件 (27)有如下程序: # include using namespace std; class Toy { public:

Toy(char* _n){ strcpy(name, _n); count++;} ~Toy() { count--;}

char* GetName(){ return name; } static int getCount(){ return count; } private:

char name[10]; static int count; };

int Toy::count=0; int main(){

Toy t1(\ cout<

运行时的输出结果是( )。

A)1 B)2 C)3 D)运行时出错 (28)有如下程序: # include using namespace std; class A { public:

A(int i) : r1(i) {}

void print() {cout<<'E'<

void print() const {cout<<'C'<

pivate: int r1; };

int main(){ 日

A a1(2); const A a2(4); a1.print(); a2.print(); return 0; }

运行时的输出结果是( )。

A)运行时出错 B)E2-C16- C)C4-C16- D)E2-E4- (29)有如下程序: # include using namespace std;

class Name{ char name[20]; public: Name(){

strcpy(name, \ }

Name(char *fname){

strcpy(name,fname); cout<<'?'; } };

int main(){

Name names[3]={Name(\张三\李四\ return 0; }

运行此程序输出符号?的个数是( )。 A)0 B)1 C)2 D)3 (30)有如下程序: # include using namespace std; class AA{ public:

AA(){ cout<<'1'; } };

class BB: public AA{ int k; public:

BB() : k(0) { cout<<'2'; } BB(int n) : k(n) { cout<<'3'; } };

int main(){ BB b(4), c; return 0; }

运行时的输出结果是( )。

A)1312 B)132 C)32 D)1412 (31)有如下程序: # include using namespace std; class C1{ public:

~C1(){ cout<<1; } };

class C2: public C1{ public:

~C2(){ cout<<2; } };

int main(){ C2 cb2; C1 *cb1; return 0; }

运行时的输出结果是( )。 A)121 B)21 C)211 D)12 (32)有如下程序: # include using namespace std;

class Publication{ //出版物类 char name[30]; public:

Publication(char *name=\未知名称\ strcpy(this->name,name); }

const char * getName()const{ return name; }

virtual const char * getType()const{ return \未知类型\ };

class Book: public Publication{ //书类 public:

Book(char *name): Publication(name){}

virtual const char * getType()const{ return \书\ };

void showPublication( Publication &p){

cout<

int main(){

Book book(\精彩人生\ showPublication(book); return 0; }

运行时的输出结果是( )。

A)未知类型:未知名称 B)未知类型:精彩人生 C)书:未知名称 D)书:精彩人生

(33)下列关于运算符重载的描述中,错误的是( )。 A)::运算符不能重载

B)类型转换运算符只能作为成员函数重载

C)将运算符作为非成员函数重载时必须定义为友元 D)重载[ ]运算符应完成“下标访问”操作 (34)有如下程序: # include

# include using namespace std; int main(){

int s[]={123, 234};

cout<

for(int i=0; i<2; i++){ cout<

运行时的输出结果是( )。

A)123 B)***123 C)***123 D)***123 234 234 ***234 234*** (35)有如下类定义: ciass A { char *a; public:

A() : a(0){}

A(char *aa){ //把aa所指字符串拷贝到a所指向的存储空间 a=__________; strcpy(a,aa); }

~A() (delete []a;} };

横线处应填写的表达式是( )。

A)new char[strlen(aa)+1] B)char[strlen(aa)+1] C)char[strlen(aa)] D)new char[sizeof(aa)-1] 二、填空题(每空2分,共30分)

(6)若表达式(x+(y-z)*(m/n))+3中的变量均为double型,则表达式值的类型为 【6】 。 (7)有如下循环语句:

for(int i=50; i>20; i-=2) cout<

运行时循环体的执行次数是 【7】 次。

(8)利用表达式a[i]可以访问int型数组a中下标为i的元素。在执行了语句int *p=a;后,利用指针p也可

访问该元素,相应的表达式是 【8】 。

(9)下面是一个递归函数,其功能是使数组中的元素反序排列。请将函数补充完整。 void reverse(int *a, int size){ if(size<2) return; int k=a[0]; a[0]=a[size-1]; a[size-1]=k;

reverse(a+l, 【9】 ); }

(10)类Sample的构造函数将形参data赋值给数据成员data。请将类定义补充完整。 class Sample{ public: