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分)============================================================ #include {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