C++期末考试复习题_第1页
C++期末考试复习题_第2页
C++期末考试复习题_第3页
C++期末考试复习题_第4页
C++期末考试复习题_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C+期末考试复习题一、选择题1. 在声明类时,下面的说法正确的是( C )。A.可以在类的声明中给数据成员赋初值 B.数据成员的数据类型可以是register C.private、public、protected可以按任意顺序出现D.没有用 private、public、protected定义的数据成员是公有成员2. 在一个类的定义中,包含有(  C )成员的定义.        A。 数据      B。 函数   

2、0;  C。 数据和函数      D. 数据或函数3。 假定AA为一个类,int a()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为(  A )。        A。 int AA:a()      B. int AA:a()         C. AA:a()    

3、      D。 AA::int a()4. 假定AA为一个类,a为该类公有的数据成员,px为指向该类对象的一个指针,则访问px所指对象中数据成员a的格式为(  C )。 A。 px(a)      B。 pxa      C. pxa      D。 px。a 5。 下列关于运算符new的描述中,错误的是( D )。A它可以创建对象或变量 B它可以创建对象数组或一般

4、类型数组C用它创建对象或对象数组时要调用相应的构造函数 D用它创建的对象可以不用delete运算符释放6。 在下面有关析构函数特征的描述中,正确的是( A )。A.一个类中可以定义多个析构函数 B。析构函数名与类名完全相同C。析构函数不能指定返回类型 D。析构函数可以由一个或多个参数 7. 构造函数是在( B )时被执行的.A。程序编译 B. 创建对象 C。创建类 D。 程序装入内存8。 友元的作用之一是( A )。A.提高程序的运行效率 B.加强类的封装性 C.实现数据的隐藏性 D。增加成员函数的种类9. 设置虚基类的目的是( B )。A。简化程序B.消除二义性 C. 提高运行效率 D。减少

5、目标代码10. 回值的纯虚函数,正确的写法是( B )。A。virtual show()=0; B.virtual void show();C。virtual void show()=0; D. void show()=0 virtual;11。 重载函数在调用时选择的依据中,( B )是错误的。A.函数名字 B.函数的返回类型 C。参数个数 D。参数的类型12. 已知:int fun (int a),m=10;下列调用fum()函数的语句中,正确的是( C )。Afun(m);Bfun (m2);Cfun (m);Dfun (m+);13. 下列各种类中,不能定义对象的类是( B ).A派生

6、类 B抽象类 C嵌套类 D虚基类14. 类中定义的成员默认为( A )访问属性。        A. public       B。 private      C。 protected       D。 friend15。 静态成员函数对类的数据成员访问(   B )。       A。

7、是不允许的                  B。 只允许是静态数据成员        C。 只允许是非静态数据成员      D. 可允许是静态数据成员或非静态数据成员16. 在下列语句中,将函数int f_sum(int x,int y)正确重载的是( A )。 A。float f_sum(int x,int y)

8、 B.int f_sum(int a,int b) C。int f_sum(int x) D。float f_sum(int a,int b)17。 下列各语句是输出字符A'的,其中错误语句是( B ).Acout<<A;Bcout.put(A'); Cchar ch=A;coutch; Dcout<<put('A');18。 当将一个类A或函数f()说明为另一个类B的友元后,类A或函数f()能够直接访问类B的(  D )。        A。 只能

9、是公有成员                      B. 只能是保护成员         C。 只能是除私有成员之外的任何成员      D。 具有任何权限的成员19。 C+语言程序中进行文件操作时应包含的头文件是( A )。Afstream。hBmath。hCstd

10、lib。hDstrstrea。h20。 在C+程序中使用的cin标识符是系统类库中定义的( A  )类中的一个对象.        A. istream       B. ostream    C。 iostream       D。 fstream    21. 已知:char n=p;在下列表示引用的方法中,( )是正确的。 A.char x=

11、n;B。 char &y=p;C. char z;D。float &t=&n;22。 在( A )情况下适宜采用内联函数.A.函数代码小,频繁调用 B。 函数代码多,频繁调用 C。函数体含有递归语句 D. 函数体含有循环语句23。 如果表达式a+b中的“+”是作为友元函数重载的运算符,若采用运算符函数调用格式,则可表示为(     )。        A. a.operator+(b)     B. b.operator+(a)&#

12、160;       C。 operator+(a,b)     D。 operator(a+b)24。 执行完循环 for(i=1;i100;i+);后,i 的值为 ( B )。 A。 99 B. 100 C. 101 D. 10225. 假定一个类对象数组为An,当离开它定义的作用域时,系统自动调用该类析构函数的次数为(  C )。        A. 0     

13、; B. 1      C。 n      D. n1 26. 在C+程序中使用的cout标识符是系统类库中定义的( B  )类中的一个对象.        A. istream      B. ostream      C。 iostream      D。

14、 fstream     二、填空题 1. 在下面一段类定义中, Derived类是由直接基类Base 1和Base 2所派生的,Derived类包含有两个间接基类BaseBase,在初始化函数Init中,需要把x1和x2的值分别赋给属于基类Base1的x成员和属于基类Base2的x成员。class BaseBase protected: int x;public: BaseBase() x = 1;;class Base1: public BaseBase public:Base1();class Base2: public BaseBase

15、 public: Base2();class Derived: (1) public Base1 , (2) public Base2 public: Derived() void Init(int x1, int x2) (3) Base1::x=x1 ; _(4)_ Base2::x=x2 _; (5) void output() cout<<Base1::x <Base2:x<endl;;2. 该类中MaxA()函数的实现如下,请在标号位置补充适当的内容。int (1) int a int x=a0;for(int i=1; i<n; i+) if(aix)

16、 (2) a j+i=j ;(3) break;class A char *a; public: _(1)_ _ /定义无参构造函数,使a的值为空 A(char aa) a=_(2)_ _; strcpy(a,aa); /用aa所指字符串初始化a所指向的动态存储空间 _(3)_ _ /定义析构函数,删除a所指向的动态存储空间 ;class Point private: int x, y; public: Point() x=y=0; Point(int x0,int y0) x=x0; y=y0; int GetX() return x; int GetY() return y; void P

17、rint() cout"Point(”x<<","<<y<<”)"endl; 1 Point operator+(Point & pt,int dd); /友元函数声明 2 ; /友元函数声明; Point operator+(Point& pt,int dd) /加号操作符重载函数,实现Point类对象与整数加法 Point temp=pt; 3 ; temp.y+=dd; return temp;Point operator+(Point& pt1,Point pt2) /加号操作符重载函数

18、,实现两个Point类对象的加法 Point temp; temp。x=pt1.x+pt2。x; 4 ; return 5 ;3. 下列程序的功能是,建立磁盘文件1。txt,从键盘输入一行字符串,以回车键结束,将其中的字母字符存放在文件1.txt中,请填空完成该程序。includefstreamusing namaspace std;int main()char a80; ; /定义输出流对象outfile if(!outfile1) cerr<"打开文件出错!”<endl; exit(1); ; /从键盘读入一行字符for(int i=0;ci!=0;i+) if( )

19、 cout<endl; ; return 0; 四、根据程序试写出运行结果1. #include <iostream.h>void main( ) int i, j; int *p1, p2; p1=i; p2=j ; i=3; j=6;cout<<"i="<i<<” j="<<j<<endl;cout<"p1="<p1<" *p2="*p2endl; *p1=5; *p2=8; cout<<"i="&l

20、t;i<" j=”<jendl;cout<<"*p1="<*p1<” p2="<*p2<endl;2#includeiostream.h #include<string.h> class CD char a; int b; public: void Init(char aa, int bb) a=new charstrlen(aa)+1; strcpy(a,aa); b=bb; char Geta() return a; int Getb() return b; void Output() co

21、ut<<a<' b<endl; ;void main()CD dx,dy;char a20;dx。Init(”abcdef",30);strcpy(a,dx。Geta();strcat(a,”xyz”);dy。Init(a,dx。Getb()+20);dx.Output();dy。Output();3. include<iostream.h>class A int a10; int n;public: A(int aa, int nn): n(nn) for(int i=0; i<n; i+) ai=aai; int Get(int

22、i) return ai;int SumA(int n) int s=0;for(int j=0; j<n; j+) s+=aj; return s;void main() int a=2,5,8,10,15,20; A x(a,4); A y(a,6); int d=1;for(int i=0; i<4; i+) d=x。Get(i); int f=y.SumA(5);cout<”d="d<<endl;cout<<”f="<fendl;4. #include<iostream。h>class circle pro

23、tected: int r;public: void setr(int x) r=x; virtual void show( )=0; ;class area:public circlepublic: void show( ) cout<<”这个圆的面积是:”<3。14*r*r<endl; ;class perimeter:public circlepublic: void show( ) cout<”这个圆的周长是: "<2*3.14rendl; ;void main( ) circle *ptr; area ob1; perimeter ob2

24、; ob1。setr(10); ob2.setr(10); ptr=ob1; ptr>show(); ptr=ob2; ptrshow(); 5。 #includeiostream.h> class A public:A( ) cout << ”A" ; class B public:B( ) cout <”B"; ; class C: public A public: C( ) cout "C”; private: B b; ; int main ( ) C obj; return 0; 6. include<iostream

25、。h class small_cat double weight; /普通数据成员,表示一只小猫的重量 static double total_weight;/静态数据成员,用来累计小猫的重量 static double total_number; /静态数据成员,用来累计小猫的只数public: small_cat(double w) /构造函数 weight=w; total_weight+=w; /累加小猫的重量 total_number+; /累加小猫的只数 void display() cout"这只小猫的重量是 "<weight<”千克n”; sta

26、tic void total_disp() couttotal_number <<” 只的小猫的总重量是 " cout<total_weight "千克"<endl; ;double small_cat:total_weight=0; /静态数据成员初始化 double small_cat:total_number=0; /静态数据成员初始化int main() small_cat w1(0。5),w2(0.6),w3(0.4); w1。display(); /调用普通成员函数,显示第1只小猫的重量 w2.display(); /调用普通成

27、员函数,显示第2只小猫的重量 w3。display(); /调用普通成员函数,显示第3只小猫的重量 small_cat:total_disp(); /调用静态成员函数 return 0; /显示小猫的只数和总重量5、 编程题1。 编程求圆、圆内接正方形和圈外切正方形的面积和周长。要求使用抽象类。解:#include <iostream。h>const double PI=3。1415;class Shapepublic:Shape(double i) r=i; virtual void Area()=0;virtual void Perimeter()=0;protected:do

28、uble r;;class Circle:public Shapepublic:Circle(double i):Shape(i) void Area() cout<”圆的面积是 "<PIr*r<<endl; void Perimeter() cout<”圆的周长是 ”2*PI*rendl; ;class In_Square:public Shapepublic:In_Square(double i):Shape(i) void Area() cout<”圆内接正方形的面积是 ”<<2*rr<<endl; void Peri

29、meter() cout<<"圆内接正方形的周长是 "<<4*1.414rendl; ;class Ex_Square:public Shapepublic:Ex_Square(double i):Shape(i) void Area() cout<"圆外切正方形的面积是 "<4*rrendl; void Perimeter() cout<<"圆外切正方形的周长是 ”8r<endl; ;void main()Shape ps;ps=new Circle(8);psArea();ps-Peri

30、meter();ps=new In_Square(8);ps>Area();ps->Perimeter();ps=new Ex_Square(8);ps>Area();ps-Perimeter();delete ps;(附上运行结果:)2。 已知复数类Complex的声明如下:class Complexpublic: Complex(); /无参构造函数 Complex(double ); /转换构造函数Complex(double, double); /有两个形参的构造函数 friend Complex operator+(Complex&, Complex); /

31、对“+"运算符进行重载 friend ostream operator(ostream, Complex); /对“<”运算符进行重载 friend istream& operator>>(istream, Complex); /对“>>”运算符进行重载private: double real,imag;要求:(1)写出该类的所有构造函数的类外定义代码. (2)写出对运算符“+"、“<”、“”进行重载的运算符重载函数的定义。3。 编写程序,计算出复数对象c1和c2相加结果,并将其结果输出。4。 从建立的数据文件f1.dat中读入1

32、0个整数放在数组中,找出并输出10个数中的最大者和它在数组中的序号.解:include <fstreamincludeiostreamusing namespace std;int main( ) int a10,max,i,order;fstream infile(”f1.dat", ios::in );if( !infile )cerr<"open error!"<endl; exit(1); for(i=0;i<10;i+) infileai ;cout<ai” ”;cout<<endl;max=a0;order=0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论