D. 抽象类
二、填空题(本大题共20小题,每小题1分,共20分)请在每小题的空格中填上正确答 案。错填、不填均无分。
1. 假设int a=1,b=2;则表达式(++a/b)*b--的值为___。 2. 复制构造函数使用___作为形式参数。
3. 通过C++语言中的___机制,可以从现存类中构建其子类。
4. 静态成员函数、友元函数、构造函数和析构函数中,不属于成员函数的是___。 5. 在下面的类定义中,私有成员有___。
class Location {int X,Y; protected:
int zeroX,zerxY;
int SetZero(intzeroX, intzeroY); private:
int length,height; public:
void init(int initX,int initY); int GetX(); int GetY(); };
6. 在C++程序设计中,建立继承关系倒挂的树应使用___继承。 7. C++支持的两种多态性分别是___多态性和运行多态性。
8. C++中语句const char * const p=“hello”;所定义的指针p和它所指的内容都不能被 ___。
9. 在C++中,定义虚函数的关键字是___。
10. 采用私有派生方式,基类的public成员在私有派生类中是___成员。 11. 对赋值运算符进行重载时,应声明为___函数。 12. 在C++中有两种参数传递方式即值传递和___传递。 13. 预处理命令以___符号开头。
14. 在构造函数和析构函数中调用虚函数时采用___。 15. C++是通过引用运算符___来定义一个引用的。
16. 如果要把类B的成员函数void fun()说明为类A的友元函数,则应在类A中加入语句___。 17. 如果要把PI声明为值为3.14159类型为双精度实数的符号常量,该声明语句是___。 18. 在C++四个流对象中,___用于标准屏幕输出。 19. 执行下列代码 int a=32; double c=32;
cout.setf(ios::hex);
cout<<\cout.unsetf(ios::hex); 程序的输出结果为___。
20. 已知有20个元素int类型向量V1,若用V1初始化为V2向量,语句是___。
三、改错题(本大题共5小题,每小题4分,共20分) 1. #include
class A { private: int x; public:
A(int i){x=i;}
A(){x=0;}
friend int min(A&,A&); };
int min(A & a,A &b)
{ return (a.x>b.x)?a.x:b.x; }
void main() { A a(3),b(5);
cout< 2. #include virtual int area(){return 0;} }; class rectangle:public shape {public: int a, b; void setLength (int x, int y) {a=x;b=y;} int area() {return a*b;} }; void main() {rectangle r; r.setLength(3,5); shape s1,*s2=&r; cout < cout < 3. 下面的类定义中有一处错误,请用下横线标出错误所在行并给出修改意见。 #include {x=a,y=b;s=x+y;} void show() {cout<<\} }; void main() { A 4. 生成具有n个元素的动态数组。 #include cin>>n; int a[n]; a[0]=2; cout< 5. #include virtual void fun()=0; A(int a) {i=a;} }; class B:public A {int j; public: void fun() {cout<<\\n\ B(int m,int n=0):A(m),j(n){} }; void main() {A *pa; B b(7); pa=&b; } 四、完成程序题(本大题共5小题,每小题4分,共20分) 1. 在下面程序横线处填上适当字句,以使该程序执行结果为: 50 4 34 21 10 0 7.1 8.1 9.1 10.1 11.1 #include for (int i=0;i t=a[i], a[i]=a[n-1-i], a[n-1-i]=t; } void main () {int a[5]={10,21,34,4,50}; double d[6]={11.1,10.1,9.1,8.1,7.1}; f(a,5);f(d,6); for (int i=0;i<5;i++) cout < for (i=0;i<6;i++) cout << d[i] << \cout << endl; } 2. 完成下面类中成员函数的定义。 #include class Arr {protected: float *p; int n;//数组大小(元素个数) public: Arr(int sz=10) { n=sz; p=new float[n]; } ~Arr(void) { _________ } int Getn(void) const { return n; } float & operator[](int i) { ________ } void Print(); }; void Arr::Print() {int i; for(i=0;i< this->Getn();i++) {if (i==0) cout << endl; cout< cout< void main() {Arr a(20); for (int i=0;i 3. 下面是一个输入半径,输出其面积和周长的C++程序,在下划线处填上正确的语句。 #include double l=2.0*pi*rad; double s=pi*rad*rad; cout<<\\n The long is:\cout<<\:\