文档库 最新最全的文档下载
当前位置:文档库 › C++练习试卷1及参考答案

C++练习试卷1及参考答案

C++练习试卷1及参考答案
C++练习试卷1及参考答案

C++练习试卷1及参考答案

一、填空题(每小题2分,共16分)

1.任何一个对象都应当具有这两个要素,即①和②,它能根据外

界给的信息进行相应的操作。

2. 封装可以使得程序中各部分之间的相互影响达到最小,并且提高程序的①

性。

3.继承可以让程序员①父类的代码,专注于子类编写新代码。

4.①型成员和②型成员具有被继承性,而③型成员不具有被继承性。

5.一旦一个函数在基类中被定义为虚函数,那么它在派生类中就被认为是虚函数,不需再在派生类中用①关键说明。

6.纯虚函数的声明形式是在虚函数声明形式后跟①。

7.函数与模板函数同名时,哪一个优先被调用?①。

8.异常使用三部曲:框定异常(①语名块)、定义异常处理(②语句块)、抛掷异常(③语句)。

二、单项选择题(每小题2分,共20分)

1、在int a=3,*p=&a;中,*p的值是()。

A. 变量a的地址值

B. 无意义

C. 变量p的地址值

D. 3

2、以下4个选项中,不能看作一条语句的是()。

A. if(b==0) m=1;n=2;

B. a=0,b=0,c=0;

C. if(a>0);

D. {;}

3、()不是构造函数的特征。

A. 构造函数的函数名与类名相同

B. 构造函数可以重载

C. 构造函数可以设置缺省参数

D. 构造函数必须指定类型说明

4、关于成员函数特征的下列描述中,()是错误的。

A. 成员函数一定是内联函数

B. 成员函数可以重载

C. 成员函数可以设置缺省参数值

D. 成员函数可以是静态的

5、有以下程序

#include

void main( )

{ int i,s=0;

for(i=1;i<10;i+=2) s+=i;

cout<

程序执行后的输出结果是()。

A. 自然数1~9的累加和

B. 自然数1~10的累加和

C. 自然数1~9中的奇数之和

D. 自然数1~10中的偶数之和

6、编译时多态性通过使用()获得。

A.构造函数

B.虚函数

C.重载函数

D.析构函数

7、有以下程序

#include

void main( )

{ char *p[10]={"abc","aabdfg","dcdbe","abbd","cd"};

cout<

}

执行后输出结果是

A. dcdbe

B. abbd

C. abc

D. abb

8、下列静态数据成员的特性中,()是错误的。

A. 说明静态数据成员时前边要加修饰符static

B. 静态数据成员要在类体外进行初始化

C. 静态数据成员不是所有对象所共用的

D. 引用静态数据成员时,要在其名称前加<类名>和作用域运算符

9、有以下语句

struct S

{ int g;

char h;} T;

则下面叙述中不正确的是()。

A. S是结构体名

B. 该结构体包含2个成员

C. S是struct类型的变量

D. T是struct S类型的变量

10、实现运行时的多态性用()。

A. 重载函数

B.构造函数

C.析构函数

D.虚函数

三、简述题(9分)

简述面向对象程序设计的基本思想、方法和步骤。

四、阅读程序,写出运行结果(每小题7分,共35分)1.(7分)

#include

void main()

{

int x=10;

int &y=x;

cout<<"x="<

cout<<"x="<

y++;

cout<<"x="<

}

2.(7分)========================================================

#include

class point

{private:

int x,y;

public:

point( ){cout<<”构造函数1被调用!\n” ;}

point(int xx,int yy)

{ x=xx;y=yy;

cout<<”构造函数2被调用”<

int GetX(){return x;}

int GetY(){return y;}};

point::point(point &p)

{ x=p.x;

y=p.y;

cout<<”拷贝构造函数被调用”<

}

void main()

{point A(4,5),B;

point C(A);

cout<

}

3.(7分)============================================================

#includeclass Sample

{protected:

int x;

public:

Sample(){x=0;}

Sample(int val){x=val;}

void operator++(){x++;}

};

class Derived:public Sample

{ int y;

public:

Derived():Sample(){y=0;}

Derived(int val1,int val2):Sample(val1) {y=val2;}

void operator--(){x--;y--;}

void disp()

{ cout<<"x="<

void main()

{ Derived d(3,5);

d.disp();

d++;

d.disp();

d--;

d++;

d.disp();

}

4. (7分)==============================================================

# include

class base

{public:

virtual int func () { return 0; }}; class derived: public base {public:

int func() { return 100; }

}; void main()

{

derived d;

base b;

cout << b.func() << endl; cout<

cout << d.base::func() << endl; }

5.(7分)=====================================================

#include

class ST

{public:

ST(){cout<<”constructing…”<

ST(){cout<<”destructing…”<

void main()

{ ST st;

try

{ cout<<”exception start…”<

throw ‘H’;

}

catch(int)

{cout<<"int exception.\n"; }

catch(char c)

{cout<<"char exception.\n"<

五、阅读下列程序,添上一个拷贝构造函数来完善整个程序,然后写出运行结果。(10分)

#include

using namespace std;

class CAT

{int* itsAge;

public:

CAT():itsAge(new int(5)){};

~CAT(){delete itsAge;}

int GetAge() const

{return *itsAge;}

void SetAge(int age)

{*itsAge=age;}

};

int main()

{CAT frisky;

cout<<"frisky’s age: "

<

cout<<"Setting frisky to 6\n"; frisky.SetAge(6);

cout<<"Creating boots from frisky\n"; CAT boots(frisky);

cout<<"frisky’s age:"

<

cout<<"boot's age:"

<

cout<<"setting frisky to 7\n";

frisky.SetAge(7);

cout<<"frisky’s age:"

<

}

六、编程题(10分)

设有下列类声明:

class A

{ public:

A()

{ n=new int;

init();

}

private:

int n;

};

写出init()引发异常的处理程序。

C++练习试卷1

参考答案及评分标准

一、填空题(每小题2分,共16分)

1. ①属性②操作

2. ①安全

3. ①重用

4. ①公有②保护③私有

5.①virtual 6. ①=0

7. ①函数8. ①try ②catch ③throw

二、单项选择题(每小题2分,共20分)

三、简述题(9分)

基本思想(+3分)

方法:抽象与分类(+2分)

步骤:1.找出类(+1分)2.描述类与类之间的关系(+1分)3.用类来界定抽象层次,从而组织程序结构(+2分)。

四、阅读程序,写出运行结果(每小题7分,共35分)

1.X=10,y=10 (+2分) X=11,y=11 (+2分)

X=12,y=12 (+3分)2.构造函数2被调用(+2分)构造函数1被调用(+2分)

拷贝构造函数被调用(+2分)

4(+1分)

3.X=3,y=5 (+2分) X=4,y=5 (+2分)

X=4,y=4 (+3分) 4.0 (+3分)

100 (+3分)0 (+1分)

5. constructing…(+1分)

exception start…(+1分)

char exception. (+1分)

H (+1分)

exception end… (+1分)

That’s ok. (+1分)

Destructing…(+1分)

五、阅读下列程序,添上一个拷贝构造函数来完善整个程序,然后写出运行结果。(10分)

拷贝构造函数如下:(+3分)

CAT(CAT& c)

{

int age=*(c.itsAge);

itsAge=new int(age);

};

CAT(CAT& cat1)

{ itsAge=new int;

*itsAge=*(cat1.itsAge);

}

运行结果:

frisky’s age: 5 (+1分) setting frisky to 6 (+1分) creating boots from frisky (+1分) frisky’s age:6 (+1分) boot’s age:6 (+1分)setting age to 7 (+1分) frisky’s age :7 (+1分)

六、编程题(10分)

init( )

{ try (+3分)

{ if n=0 throw “内存申请失败。”; (+3分)

else

cout<<”内存申请成功。”; (+1分)

}

catch(char* str) (+3分)

{cout<

}

(此文档部分内容来源于网络,如有侵权请告知删除,文档可自行编辑修改内容,供参

考,感谢您的配合和支持)

编辑版word

相关文档