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. 32、以下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 <iostream.h>void main( ){ int i,s=0;for(i=1;i<10;i+=2) s+=i;cout<<s;}程序执行后的输出结果是()。
A. 自然数1~9的累加和B. 自然数1~10的累加和C. 自然数1~9中的奇数之和D. 自然数1~10中的偶数之和6、编译时多态性通过使用()获得。
A.构造函数B.虚函数C.重载函数D.析构函数7、有以下程序#include <iostream.h>void main( ){ char *p[10]={"abc","aabdfg","dcdbe","abbd","cd"};cout<<p[3]<<endl;}执行后输出结果是A. dcdbeB. abbdC. abcD. abb8、下列静态数据成员的特性中,()是错误的。
A. 说明静态数据成员时前边要加修饰符staticB. 静态数据成员要在类体外进行初始化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<iostream.h>void main(){int x=10;int &y=x;cout<<"x="<<x<<","<<"y="<<y<<end l; x++;cout<<"x="<<x<<","<<"y="<<y<<end l;y++;cout<<"x="<<x<<","<<"y="<<y<<end l;}2.(7分)========================================================#include<iostream.h>class point{private:int x,y;public:point( ){cout<<”构造函数1被调用!\n” ;}point(int xx,int yy){ x=xx;y=yy;cout<<”构造函数2被调用”<<endl;} point(point &p);int GetX(){return x;}int GetY(){return y;}};point::point(point &p){ x=p.x;y=p.y;cout<<”拷贝构造函数被调用”<<endl;}void main(){point A(4,5),B;point C(A);cout<<C.GetX()<<endl;}3.(7分)============================================================#include<iostream.h>class 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="<<x<<",y="<<y<<endl;} };void main(){ Derived d(3,5);d.disp();d++;d.disp();d--;d++;d.disp();}4. (7分)==============================================================# include<iostream.h>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<<d.func()<<endl;cout << d.base::func() << endl; }5.(7分)=====================================================#include <iostream.h>class ST{public:ST(){cout<<”constructing…”<<endl;} ~ST(){cout<<”destructing…”<<endl;} };void main(){ ST st;try{ cout<<”exception start…”<<endl;throw ‘H’;}catch(int){cout<<"int exception.\n"; }catch(char c){cout<<"char exception.\n"<<c<<endl;} cout<<”exception end…”<<endl; cout<<"That's ok.\n";五、阅读下列程序,添上一个拷贝构造函数来完善整个程序,然后写出运行结果。
(10分)#include<iostream>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: "<<frisky.GetAge()<<endl;cout<<"Setting frisky to 6\n"; frisky.SetAge(6);cout<<"Creating boots from frisky\n"; CAT boots(frisky);cout<<"frisky’s age:"<<frisky.GetAge()<<endl;cout<<"boot's age:"<<boots.GetAge()<<endl;cout<<"setting frisky to 7\n";frisky.SetAge(7);cout<<"frisky’s age:"<<frisky.GetAge()<<endl;}六、编程题(10分)设有下列类声明:class A{ public:A(){ n=new int;init();}private:int n;};写出init()引发异常的处理程序。
C++练习试卷1参考答案及评分标准一、填空题(每小题2分,共16分)1. ①属性②操作2. ①安全3. ①重用4. ①公有②保护③私有5.①virtual 6. ①=07. ①函数8. ①try ②catch ③throw二、单项选择题(每小题2分,共20分)三、简述题(9分)基本思想(+3分)方法:抽象与分类(+2分)步骤:1.找出类(+1分)2.描述类与类之间的关系(+1分)3.用类来界定抽象层次,从而组织程序结构(+2分)。