当前位置:   article > 正文

C++面向对象可视化编程历年期末考试真题-拯救你的期末(三套试卷,附答案)(上)_c++期末试卷+答案

c++期末试卷+答案

注意:考试时间 110分钟

祝大家在期末考试取得好成绩,实现自己的目标。

第一套

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

1.  C++支持面向对象程序设计的四个要素是(    )。

A.抽象性 可读性 继承性 多态性    B.封装性 继承性 多态性 抽象性

C.封装性 继承性 多态性 传递性    D.继承性 多态性 友元性 抽象性

2.  假设已有定义char * const pstr=“option";下面的语句正确的是(    )。

A.pstr[3]=’p’;                      B.pstr=”abcd”;

C.pstr=new char[3];                 D.pstr= new char(‘x’);

3 .  函数int FA(int,double)不可与下列哪个函数构成重载。(    )

A.int  FA(int,int,int);           B.double  FA(int,int);

C.double  FA(double,double);     D.double  FA(int,double);

4.  下面关于静态成员的描述中,正确的是(    )。

A.在建立对象前,就可以为静态数据成员赋值

B.在静态成员函数中可以使用this指针

C.静态数据成员要在构造函数内初始化

D.静态成员函数可以访问本类中的静态数据成员和非静态数据成员

5.  下面有关类的说法错误的是(    )。

A.一个类可以有多个构造函数       B.一个类可以有多个析构函数

C.构造函数不能被指定返回值       D.析构函数不能被指定返回值

6.  当使用ifstream流类定义一个流对象,并打开一个磁盘文件时,文件的隐含打开方式为(    )。

A.ios::in|ios::out   B.ios::out        C.ios::in            D.ios::binary

7.  在异常处理机制中,将可能发生异常的程序代码放在(    )块中。

A.catch          B.try            C.catch             D.error

8.  假定Animal为一个类,则执行“Animal  a[3],*pt;”语句时,自动调用该类构造函数的次数为(    )。

A.1              B.2              C.3                D.4

9.  类CMax的缺省构造函数原型和析构函数原型是(    )。

A.CMax ( )和~CMax ( )               B.CMax (int)和 ~CMax ( )   

C.CMax ( )和~CMax (double )          D.int CMax ( )和void ~CMax ( )

10.  如果A类被说明成B类的友元,则(    )。

A.A类的成员即是B类的成员

B.B类的成员即是A类的成员

C.A类的成员函数可以访问B类的成员

D.B类的成员函数可以访问A类的成员

二、填空题(每空2分,共 14分)

1.可以使用关键字  [1]  将类的数据成员声明为静态数据成员。

2.设要把一个文件输出流对象myf与文件“d:\out.txt”相关联,所用的C++语句是:  [2]  

3.在私有继承方式下,基类的公有成员将成为派生类中的  [3]  成员。

4.当使用类的成员函数重载减号运算符时,成员函数的参数表中有  [4]  个参数。

5.创建堆对象需要使用操作符  [5]  ,删除堆对象需要使用操作符delete。

6.C++标准库中的异常层次的根类类名为  [6]  

7.C++语言支持两种多态性,通过使用重载函数可以实现  [7]  时的多态性。

三、判断题(每小题 1分,共 6分)

1.在声明类时,private、protected、public可以按任意顺序出现。(    )

2.友元的作用之一是实现数据的隐藏性。(    )

3.构造函数可以是虚函数。(    )

4.抽象类至多含有一个纯虚函数。(    )

5.转换函数定义时,不能指定参数和返回值。(    )

6.在函数代码多,且不常用的情况下,适宜将该函数定义为内联函数。(    )

四、阅读题(每小题 5分,共 15分)

1.阅读程序写出运行结果。

  1. #include<iostream >
  2. #include <string>
  3. using namespace std;
  4. class Person
  5. { public:
  6. Person(char *na)
  7. { strcpy(name,na);
  8. cout<<"构造"<<name<<endl; }
  9. Person(Person&p)
  10. { strcpy(name,p.name);
  11. cout<<"拷贝构造"<<name<<endl; }
  12. private:
  13. char name[20];
  14. };
  15. void main( )
  16. { Person wang("wang");
  17. Person li(wang); }

【运行结果】

2.阅读程序写出运行结果。

  1. #include<iostream >
  2. using namespace std;
  3. int fun(int x,int y)
  4. { return x+y; }
  5. int fun(int n=5)
  6. { int sum=0;
  7. for(int i=1;i<=n;i++)
  8. sum=sum+i;
  9. return sum;
  10. }
  11. void main( )
  12. { cout<<fun( )<<endl;
  13. cout<<fun(6)<<endl;
  14. cout<<fun(10,20)<<endl; }

【运行结果】

3.阅读程序写出运行结果

  1. #include<iostream>
  2. using namespace std;
  3. class A
  4. {public:
  5. virtual void f1( )
  6. {cout<<"A::f1"<<endl;}
  7. void f2( )
  8. {cout<<"A::f2"<<endl;}
  9. virtual void f3( )
  10. {cout<<"A::f3"<<endl;}
  11. };
  12. class B:public A
  13. {public:
  14. void f1( )
  15. {cout<<"B::f1"<<endl;}
  16. void f2(int x)
  17. {cout<<"B::f2"<<endl;}
  18. void f3( )
  19. {cout<<"B::f3"<<endl;}
  20. };
  21. void main( )
  22. { A *ptr;
  23. B b;
  24. ptr=&b;
  25. ptr->f1( );
  26. ptr->f2( );
  27. ptr->f3( );
  28. b.f2(3); }

【运行结果】

五、编程题(每小题15分45分)

1.  定义一个时间类,用来存储时、分、秒信息,类中还有带参数的构造函数和显示时间的成员函数,并且定义主函数测试设计的类。

2. 定义一个分数类Fraction,其数据成员包含int类型的分子和分母,其函数成员包括构造函数和输出函数。请分别采用友元函数重载运算符+和*,实现分数的加法运算和乘法运算,并定义主函数main( )对这些运算符进行测试。

3. 定义一个学生基类Student,属性有学号、姓名、年龄,再由Student类派生出研究生类Postgraduate,研究生类中增加指导老师。要求两个类中均有构造函数和输出函数,并编程测试设计的类。

第一套答案

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

  

题号

1

2

3

4

5

6

7

8

9

10

答案

B

A

D

A

B

C

B

C

A

C

二、填空题(每空2分,共 14分)

[1]   static      [2]  myf.open(d:\\out.txt)     [3]   private(或私有)  

[4]   1           [5]  new        [6]   exception    [7]   编译     

三、判断题(每小题 1分,共 6分)

 1( √)   2( × )   3( × )   4( × )   5( √ )   6( × )

四、阅读题(每小题 5分,共 15分)

1.【运行结果】

构造wang           (3分)

拷贝构造wang       (2分)

2.【运行结果】

15     (1分)

21     (2分)

30     (2分)

3. 【运行结果】

B::f1     (1分)

A::f2     (1分)

B::f3     (1分)

B::f2     (2分)

五、编程题(每小题 15分,共 45分)

1.

  1. #include<iostream >
  2. using namespace std;
  3. class Time
  4. {int hour,minute,second;
  5. public:
  6.   Time(int a=0,int b=0,int c=0)
  7.   {hour=a;minute=b;second=c;}
  8.   void Show()
  9.   {cout<<hour<<":"<<minute<<":"<<second<<endl;}
  10. };
  11. void main( )
  12. {Time t(11,12,30);
  13. t.Show ();
  14. }

评分:类定义和数据成员(4分)、构造函数(4分)、显示函数(3分)、main函数测试代码(4分)。

2.

  1. #include "stdafx.h"
  2. #include <iostream.h>
  3. class Fraction
  4. { int nume, deno; //分子,分母
  5. public:
  6. Fraction(int n=0, int d=1){ nume = n; deno = d; }
  7. void Show()
  8. {cout<<nume<<"/"<<deno<<"  ";}
  9. friend Fraction operator +(Fraction f1, Fraction f2);
  10. friend Fraction operator *(Fraction f1, Fraction f2);
  11. };
  12.  Fraction operator +(Fraction f1, Fraction f2)
  13. { return Fraction(f1.nume*f2.deno + f2.nume*f1.deno, f1.deno*f2.deno); }
  14.  Fraction operator *(Fraction f1, Fraction f2)
  15. { return Fraction(f1.nume*f2.nume, f1.deno*f2.deno); }
  16. void main()
  17. { Fraction d1(2, 5), d2(1, 6), d3;
  18. d3 = d1 + d2;
  19. d3.Show();
  20. d3 = d1 * d2;
  21. d3.Show(); }

评分:类定义(4分),构造函数、显示函数、运算符+重载函数、运算符*重载函数(各2分),main函数测试代码(3分)。

3.

  1. #include"stdafx.h"
  2. #include"iostream"
  3. #include"string"
  4. using namespace std;
  5. class Student
  6. {int id;
  7. string name;
  8. int age;
  9. public:
  10. Student(int i,string n,int a)
  11. { id=i;name=n;age=a;}
  12. void show()
  13. {cout<<id<<","<<name<<","<<age<<endl;}
  14. };
  15. class Postgraduate:public Student
  16. {string teacher;
  17. public:
  18. Postgraduate(int i,string n,int a,string t):Student(i,n,a)
  19. { teacher=t;}
  20. void show()
  21. {Student::show();cout<<"指导老师"<<teacher<<endl;}
  22. };
  23. void main()
  24. {
  25. Student s(1001,"李明",20);
  26. s.show ();
  27. Postgraduate p(1002,"王琳",20,"Jack");
  28. p.show ();
  29. }

评分:Student类(5分)、Postgraduator类(5分)main函数测试代码(5分)。

第二套

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

1. 下列叙述不正确的是(    )。

A. 转换函数不能指定参数           B. 一个类可以有多个转换函数

C. 转换函数不能指定访问权限       D. 转换函数不能指定返回值

2. 函数double  FB(double, int )不可与下列哪个函数构成重载。(    )

A.int  FB (int );                  B.double  FB (double);

C.int  FB (double,int);           D.double  FB (int,double);

3. 假设已有定义const char * pstr=“examples";下面的语句错误的是(    )。

A. pstr[3]=’p’;                     B. pstr=”wen”;

C. pstr=new char[5];                D. pstr= new char(‘p’);

4. 对文件进行读写操作,要使用编译预处理命令包含头文件(    )。

A. fstream.h      B. ifstream.h      C. ofstream.h      D. iostream.h

5. 在异常处理机制中,可使用(    )语句抛出异常。

A. try           B. catch          C. throw          D.  error

6. 假定Cat为一个类,则执行“Cat  a[2],b;”语句时,自动调用该类构造函数的次数为(    )。

A. 2            B. 3             C. 4              D. 5

7. 下面关于静态成员的描述中,正确的是(    )。

A. 静态成员函数只能在类外定义。

B. 静态数据成员是本类的所有对象所共有的。

C. 静态成员函数在类外定义时,要用static前缀。

D. 静态数据成员不能通过类的对象调用

8. 下面有关类的说法错误的是(    )。

A. 析构函数不能被指定参数        B. 在一个类中可以说明具有类类型的数据成员

C. 构造函数可以有默认参数          D. 类中析构函数可以定义多个

9. 下面有关抽象类的说法正确的是(    )。

A. 抽象类至少包含一个纯虚函数      B. 可以创建抽象类的类对象

C. 不能定义指向抽象类对象的指针    D. 抽象类不能包含多个虚函数

10. 已知类A是类B的友元,类B是类C的友元,则(    )。

A. 类A一定是类C的友元           

B. 类C一定是类A的友元

C. 类C的成员函数可以访问类B的对象的任何成员

D. 类A的成员函数可以访问类B的对象的任何成员 

二、填空题(每空2分,共 14分)

1.C++语言支持两种多态性,通过使用继承和虚函数,可以实现  [1]  时的多态性。

2.若要将Score 类声明为Student类的友元,应在Student类中添加代码 “  [2]  class Score”。

3.模板分为函数模板和  [3]  模板。

4.创建堆对象需要使用操作符new,删除堆对象需要使用操作符  [4]  

5.当使用类的友元函数重载运算符+时,友元函数的参数表中有  [5]  个参数。

6.设要把一个输入文件流对象ifile与文件“E:\A.txt”相关联,所用的C++语句是:  [6]  

7.在私有继承方式下,基类的保护成员将成为派生类中的   [7]  成员。

三、判断题(每小题 1分,共 6分)

1.没有用private、protected、public定义的数据成员是公有成员。(    )

2.友元的作用之一是加强类的封装性。(    )

3.析构函数可以是虚函数。(    )

4.一般将含有循环语句的函数定义为内联函数。(    )

5.可以让指向基类的指针指向公有派生类对象。(    )

6.C++语言允许在重载运算符时改变运算符的操作数个数。(    )

四、阅读题(每小题 5分,共 15分)

1.阅读程序写出运行结果。

  1. #include<iostream >
  2. using namespace std;
  3. int add(int x=0,int y=0,int z=0)
  4. { int sum;
  5. sum=x+y+z;
  6. return sum;
  7. }
  8. void main( )
  9. { int a=10,b=20,c=30;
  10. cout<<add( )<<endl;
  11. cout<<add(a)<<endl;
  12. cout<<add(a,b)<<endl;
  13. cout<<add(a,b,c)<<endl;
  14. }

【运行结果】

2.阅读程序写出运行结果

  1. #include<iostream >
  2. using namespace std;
  3. class Parent
  4. { public:
  5. Parent()
  6. { cout << "Parent" << endl; }
  7. ~Parent()
  8. { cout << "~Parent" << endl; }
  9. };
  10. class Child :public Parent
  11. {
  12. public:
  13. Child( )
  14. { cout << "Child" << endl; }
  15. ~Child( )
  16. { cout << "~Child" << endl; }
  17. };
  18. void main( )
  19. { Child obj1;
  20. }

【运行结果】

3.阅读程序写出运行结果

  1. #include<iostream >
  2. using namespace std;
  3. class base
  4. {
  5. public:
  6. virtual void f1( )
  7. {cout<<"base::f1"<<endl;}
  8. virtual void f2( )
  9. {cout<<"base::f2"<<endl;}
  10. void f3( )
  11. {cout<<"base::f3"<<endl;}
  12. };
  13. class derive:public base
  14. {public:
  15. void f1( )
  16. {cout<<"derive::f1"<<endl;}
  17. void f2(int x)
  18. {cout<<"derive::f2"<<endl;}
  19. void f3( )
  20. {cout<<"derive::f3"<<endl;}
  21. };
  22. void main()
  23. {
  24. base *ptr;
  25. derive obj;
  26. ptr=&obj;
  27. ptr->f1( );
  28. ptr->f2( );
  29. ptr->f3( );
  30. obj.f2(5);
  31. }

【运行结果】

五、编程题(每小题15分45分)

1.定义一个日期类,用来存储年、月、日信息,类中还有带参数的构造函数和显示日期的成员函数,并且编写主函数测试设计的类。

2.定义一个分数类Fraction,其数据成员包含int类型的分子和分母;其函数成员有构造函数、输出函数和运算符重载函数。分别重载运算符-和*,实现分数的减法运算和乘法运算,并定义主函数main()对这些运算符进行测试。

3.定义一个汽车类vehicle,属性有载重、车轮数,再由vehicle类派生出轿车类car,car类中增加载客数。要求两个类中均有构造函数和输出函数,并编程测试设计的类。

第二套答案

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

  

题号

1

2

3

4

5

6

7

8

9

10

答案

C

C

A

A

C

B

B

D

A

D

二、填空题(每空2分,共 14分)

[1]   运行      [2]  friend        [3]                  [4]    delete            

[5]    2        [6]  ifile.open(E:\\A.txt)            [7]   私有(或private)  

三、判断题(每小题 1分,共 6分)

 1( × )   2(×  )   3( √ )   4(  × )   5( √ )   6( ×  )

四、阅读题(每小题 5分,共 15分)

1.【运行结果】

0     (2分)

10    (1分)

30    (1分)

60    (1分)

2.【运行结果】

Parent   (2分)          

Child    (1分)    

~Child   (1分)

~Parent  (1分)

3.【运行结果】

derive::f1  (1分)

base::f2    (1分)

base::f3    (1分)

derive::f2  (2分)

五、编程题(每小题 15分,共 45分)

1.

  1. #include<iostream >
  2. using namespace std;
  3. class Date
  4. {int year,month,minute;
  5. public:
  6.   Date(int a=0,int b=0,int c=0)
  7.   {year=a;month=b;minute=c;}
  8.   void Show()
  9.   {cout<<year<<"/"<<month<<"/"<<minute<<endl;}
  10. };
  11. void main( )
  12. {Date t(2020,12,3);
  13. t.Show ();}

评分:类定义和数据成员(4分)、构造函数(4分)、显示函数(3分)、main函数测试代码(4分)。

2.

  1. #include "stdafx.h"
  2. #include <iostream.h>
  3. class Fraction
  4. { int nume, deno; //分子,分母
  5. public:
  6. Fraction(int n=0, int d=1){ nume = n; deno = d; }
  7. void Show()
  8. {cout<<nume<<"/"<<deno<<"  ";}
  9.  Fraction operator -( Fraction f);
  10.  Fraction operator *( Fraction f);
  11. };
  12. Fraction Fraction::operator -( Fraction f)
  13. { return Fraction(nume*f.deno-f.nume*deno, deno*f.deno); }
  14. Fraction Fraction::operator *( Fraction f)
  15. { return Fraction(nume*f.nume, deno*f.deno); }
  16. void main()
  17. { Fraction d1(2, 5), d2(1, 6), d3;
  18. d3 = d1 - d2;
  19. d3.Show();
  20. d3 = d1 * d2;
  21. d3.Show();
  22. }

评分类定义(4分),构造函数、显示函数、运算符-重载函数、运算符*重载函数(各2分),main函数测试代码(3分)。

3.

  1. class vehicle              
  2. {
  3. private:                     
  4. float weight;
  5. int wheels;
  6. public:           
  7. vehicle(int in_wheels,float in_weight)
  8. {wheels=in_wheels;weight=in_weight;}
  9. void show()
  10. {cout<<"载重"<<weight<<"  车轮数"<<wheels<<endl;}
  11. };
  12. class car:public vehicle    // 派生类car类的定义
  13. {
  14. private:               
  15. int passenger_load;
  16. public:            
  17. car(int in_wheel,float in_weight,int people=5):vehicle(in_wheel,in_weight)
  18. {passenger_load=people;}
  19.     int get_passengers(){return passenger_load;}
  20. void show()
  21. {vehicle::show ();cout<<"载客数"<<passenger_load<<endl;}
  22. };
  23. void main()
  24. {   vehicle v1(4,4000);
  25.      v1.show();
  26. car bm(4,5000,8);
  27. bm.show ();
  28. }

评分:vehicle类(5分)、 car类(5分)、main函数测试代码(5分)。

第三套

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

1.在(   )情况下适宜采用inline定义内联函数。

A.函数体含有while语句             B.函数体含有递归语句

C.函数代码多,且不常调用          D.函数代码少,且频繁调用

2.已知函数Fun的原型为int Fun (int ,int),下列不构成重载的函数的是(    )。

A.char Fun (int,int); B.double Fun (int,int,double);

C.int Fun (int); D.float Fun (int,int,int);

3.下面关于静态成员的描述中,错误的是(    )。

A.静态数据成员是类的所有对象所共有的

B.静态数据成员不能在构造函数内初始化

C.静态数据成员可以通过类的对象调用

D.静态成员函数可以访问本类中的所有数据成员。

4.当使用ofstream流类定义一个流对象,并打开一个磁盘文件时,文件的隐含打开方式为(    )A.ios::in          B.ios::out        C.ios::in|ios::out        D.ios::binary

5.假定Dog为一个类,则执行“Dog  a[3];”语句时,调用该类构造函数的次数为(    )。

A.0              B.1             C.2                  D.3

6.既要禁止修改指针p本身,又要禁止修改p所指向的数据,这样的指针应定义为(    )。

    A.char *p=“OK”;                B.const  char * const p=“OK”;

    C.const char *p=“OK”;        D.char * const p=“OK”; 

7。在异常处理机制中,(    )语句用于捕获异常,进行异常处理。

A.try            B.catch          C.throw              D.error

8.只能使用成员函数重载的运算符为(    )

A +                B. /              C [ ]                D*

9.如果没有为一个类定义任何构造函数的情况下,下列描述正确的是(    )。

A.编译器自动创建一个不带参数的构造函数  

B.这个类不需要构造函数

C.创建类对象时不调用构造函数          

D.该类不能通过编译

10.有关运算符重载错误的描述是(    )。

A.C++语言不允许在重载运算符时改变运算符的操作数个数

B.C++语言不允许在重载运算符时改变运算符的原来的功能

C.C++语言不允许在重载运算符时改变运算符的结合性

D.C++语言不允许在重载运算符时改变运算符的优先级

二、填空题(每空2分,共 14分)

1.对使用关键字  [1]  所开辟的动态存储空间,释放时必须使用关键字  [2]  

2.若CShape为类名,则语句“CShape (CShape&);”,为该类的  [3]  构造函数的原型说明。

3.C++支持面向对象程序设计的四个要素是:  [4]   、抽象性、继承性和多态性  。

4.对文件进行读写操作,要使用编译预处理命令包含的头文件为  [5]  

5.在保护继承方式下,基类的公有成员将成为派生类中的   [6]  成员。

6.当使用类的友元函数重载单目运算符时,友元函数的参数表中有  [7]  个参数。

三、判断题(每小题 1分,共 6分)

1.在声明类时,应按private、protected、public的顺序定义类中成员。(    )

2.友元的作用之一是提高程序的执行效率。(    )

3.类的析构函数的作用是对象的初始化。(    )

4.已知类A是类B的友元,类B是类C的友元,则类A一定是类C的友元。(    )

5.一个类中不可以定义多个转换函数。(    )

6.C++标准库中的异常层次的根类为exception类。(    )

四、阅读题(每小题 5分,共 15分)

1.阅读程序写出运行结果。

  1. #include<iostream >
  2. #include <string>
  3. using namespace std;
  4. class Person
  5. { public:
  6. Person(Person &a)
  7. { strcpy(name,a.name);
  8. cout<<"copy construct "<<name<<endl; }
  9. Person(char *na)
  10. { strcpy(name,na);
  11. cout<<"construct "<<name<<endl;
  12. }
  13. private:
  14. char name[20];
  15. };
  16. void main ()
  17. { Person *p=new Person("Tom");
  18. Person li(*p);
  19. delete p;
  20. }

【运行结果】

2.阅读程序写出运行结果

  1. #include<iostream >
  2. using namespace std;
  3. void swap(int &x,int &y);
  4. void main()
  5. { int x=33, y=55;
  6. cout <<"before swap, x=" <<x <<" ,y=" <<y <<endl;
  7. swap(x,y);
  8. cout<<"after swap,x="<<x<<" ,y="<<y;
  9. }
  10. void swap(int &rx,int &ry)
  11. { int temp=rx;
  12. rx=ry;
  13. ry=temp;
  14. }

【运行结果】

3.阅读程序写出运行结果

  1. #include<iostream >
  2. using namespace std;
  3. class A
  4. {
  5. public:
  6. virtual void f1( )
  7. {cout<<"A::f1"<<endl;}
  8. void f2( )
  9. {cout<<"A::f2"<<endl;}
  10. };
  11. class B:public A
  12. {public:
  13. void f1( )
  14. {cout<<"B::f1"<<endl;}
  15. void f2( )
  16. {cout<<"B::f2"<<endl;}
  17. };
  18. void main( )
  19. { A a,*ptr;
  20. B b;
  21. ptr=&a;
  22. ptr->f1( );
  23. ptr->f2( );
  24. ptr=&b;
  25. ptr->f1( );
  26. ptr->f2( );
  27. }

【运行结果】

五、编程题(每小题15分45分)

1.定义一个学生类Student,用来存储学号、姓名、性别信息,类中还有带参数的构造函数和显示学生信息的成员函数,并且编写主函数测试设计的类。

2.定义一个图形基类Shape,在类中声明一个虚函数,用来求周长。在Shape类基础上派生出三角形类Triangle和圆类Circle,求它们各自的周长,并且编写主函数测试设计的类。

3.定义一个分数类Fraction,其数据成员包含int类型的分子和分母。请使用成员函数重载运算符+,实现分数的加法运算;使用友元函数重载运算符-,实现分数的减法运算,并定义主函数main()对这些运算符进行测试。

第三套答案

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

  

题号

1

2

3

4

5

6

7

8

9

10

答案

D

A

D

B

D

B

B

C

A

B

二、填空题(每空2分,共 14分) 

[1]   new           [2]    delete    [3]   拷贝      [4]   封装性      

[5]   fstream.h     [6]    保护      [7]    1        

三、判断题(每小题 1分,共 6分) 

1(  × )   2(  √ )   3(×  )   4(×  )   5(×  )   6(√   )

四、阅读题(每小题 5分,共 15分)

1.【运行结果】

construct Tom                (3分)

copy construct Tom           (2分)

2.【运行结果】

before swap, x=33 ,y=55      (3分)

after swap,x=55,y=33         (2分)

3.【运行结果】

A::f1   (2分)

A::f2   (1分)

B::f1   (1分)

A::f2   (1分)

五、编程题(每小题 15分,共 45分)

1.

  1. #include"stdafx.h"
  2. #include"iostream"
  3. #include"string"
  4. using namespace std;
  5. class Student
  6. {int id;
  7. string name;
  8. char sex;
  9. public:
  10. Student(int i,string n,char c)
  11. { id=i;name=n;sex=c;}
  12. void show()
  13. {cout<<id<<","<<name<<","<<sex<<endl;}
  14. };
  15. void main()
  16. {Student s(1001,"李明",'f');
  17. s.show ();
  18. }

评分:类定义和数据成员(4分)、构造函数(4分)、显示函数(3分)、main函数测试代码(4分)。

2.

  1. #include <iostream>
  2. using namespace std;
  3. class shape {
  4. public:
  5. virtual double circumference() = 0; //或空函数{ }
  6. };
  7. class triangle : public shape {
  8. double a, b,c;
  9. public:
  10. triangle(double x, double y, double z){ a=x;b=y;c=z; }
  11. double circumference(){ return (a+b+c); }
  12. };
  13. class circle : public shape {
  14. double r;
  15. public:
  16. circle(double radius){ r = radius; }
  17. double circumference(){ return 3.1415926 * r * 2; }
  18. };
  19. void main()
  20. {
  21. shape *p[2];
  22. p[0] = new triangle(3.0,4,5.0);
  23. p[1] = new circle(10.0);
  24. for (int i = 0; i < 2; i++)
  25. { cout << i << " " << p[i]->circumference() << endl;
  26. delete p[i];
  27. }
  28. }

评分:shape等三个类的定义及实现(各4分)、main函数测试代码(3分)。

3.

  1. #include "stdafx.h"
  2. #include <iostream.h>
  3. class Fraction
  4. { int nume, deno; //分子,分母
  5. public:
  6. Fraction(int n=0, int d=1){ nume = n; deno = d; }
  7. void Show()
  8. {cout<<nume<<"/"<<deno<<"  ";}
  9. Fraction operator +(Fraction f);
  10. friend Fraction operator -(Fraction f1, Fraction f2);
  11. };
  12. Fraction Fraction::operator +(Fraction f)
  13. { return Fraction(nume*f.deno + f.nume*deno, deno*f.deno); }
  14.  Fraction operator -(Fraction f1, Fraction f2)
  15. { return Fraction(f1.nume*f2.deno-f2.nume*f1.deno, f1.deno*f2.deno); }
  16. void main()
  17. {
  18. Fraction d1(2, 5), d2(1, 6), d3;
  19. d3 = d1 + d2;
  20. d3.Show();
  21. d3 = d1 - d2;
  22. d3.Show();
  23. }

评分:类定义(5分),两个运算符重载函数(各3分),main函数测试代码(4分)。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/602638
推荐阅读
相关标签
  

闽ICP备14008679号