c++面向对象程序设计 谭浩强 第五章答案

Posted suibian1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++面向对象程序设计 谭浩强 第五章答案相关的知识,希望对你有一定的参考价值。

1:

#include <iostream>

using namespace std;

class Student

public:

  void get_value()

   cin>>num>>name>>sex;

  void display( )

    cout<<"num: "<<num<<endl;

     cout<<"name: "<<name<<endl;

     cout<<"sex: "<<sex<<endl;

 private :

   int num;

   char name[10];

   char sex;

;   

 

class Student1: public Student

 public:

   void get_value_1()

    get_value();

     cin>>age>>addr;

   void display_1()

      cout<<"age: "<<age<<endl;          //引用派生类的私有成员,正确。

       cout<<"address: "<<addr<<endl;    //引用派生类的私有成员,正确。

  private:

       int age;

       char addr[30];

 ;

 

int  main()

Student1 stud1;

  stud1.get_value_1();

  stud1.display();

  stud1.display_1();

  return 0;

2:

#include <iostream>

using namespace std;

class Student

public:

  void get_value()

   cin>>num>>name>>sex;

  void display( )

    cout<<"num: "<<num<<endl;

     cout<<"name: "<<name<<endl;

     cout<<"sex: "<<sex<<endl;

 private :

   int num;

   char name[10];

   char sex;

;   

 

class Student1: private Student

 public:

   void get_value_1()

    get_value();

     cin>>age>>addr;

   void display_1()

       display();

       cout<<"age: "<<age<<endl;        //引用派生类的私有成员,正确。

       cout<<"address: "<<addr<<endl;    //引用派生类的私有成员,正确。

  private:

       int age;

    char addr[30];

 ;

 

int main()

 Student1 stud1;

  stud1.get_value_1();

  stud1.display_1();

  return 0;

3:

#include <iostream>

using namespace std;

class Student                        //声明基类

public:                             //基类公用成员

  void get_value();

  void display( );

 protected :                         //基类保护成员

    int num;

    char name[10];

    char sex;

;

 

void Student::get_value()

 cin>>num>>name>>sex;

 

void Student::display( )

 cout<<"num: "<<num<<endl;

  cout<<"name: "<<name<<endl;

  cout<<"sex: "<<sex<<endl;

 

 

class Student1: protected Student              //声明一个保护派生类

public:

   void get_value_1();

   void display1( );

private:

   int age;                          

   char addr[30];

;

 

void Student1::get_value_1()

 get_value();

  cin>>age>>addr;

 

void Student1::display1( )

  cout<<"num: "<<num<<endl;         //引用基类的保护成员

   cout<<"name: "<<name<<endl;       //引用基类的保护成员

   cout<<"sex: "<<sex<<endl;         //引用基类的保护成员

   cout<<"age: "<<age<<endl;         //引用派生类的私有成员

   cout<<"address: "<<addr<<endl;    //引用派生类的私有成员

  

 

int main( )

 Student1 stud1;                      //stud1是派生类student1类的对象

  stud1.get_value_1();                 //调用派生类对象stud1的公用成员函数

  stud1.display1( );                   //调用派生类对象stud1的公用成员函数

  return 0;

 

4: 解法一

#include <iostream>

using namespace std;

class Student//声明基类

public:                             //基类公用成员

  void get_value();

  void display( );

 protected :                         //基类保护成员

    int num;

    char name[10];

    char sex;

;

 

void Student::get_value()

 cin>>num>>name>>sex;

 

void Student::display( )

 cout<<"num: "<<num<<endl;

  cout<<"name: "<<name<<endl;

  cout<<"sex: "<<sex<<endl;

 

 

class Student1: public Student              //声明一个公用派生类

public:

   void get_value_1();

   void display1( );

 private:

   int age;                          

   char addr[30];

;

 

void Student1::get_value_1()

 get_value();

  cin>>age>>addr;

 

void Student1::display1( )

  cout<<"num: "<<num<<endl;     //引用基类的保护成员,合法

   cout<<"name: "<<name<<endl;       //引用基类的保护成员,合法

   cout<<"sex: "<<sex<<endl;         //引用基类的保护成员,合法

   cout<<"age: "<<age<<endl;         //引用派生类的私有成员,合法

   cout<<"address: "<<addr<<endl;    //引用派生类的私有成员,合法

  

 

int main( )

 Student1 stud1;                      //stud1是派生类student1类的对象

  stud1.get_value_1();                 //调用派生类对象stud1的公用成员函数get_value_1

  stud1.display1( );                   //调用派生类对象stud1的公用成员函数display1

  return 0;

 

解法二

#include <iostream>

using namespace std;

class Student                        //声明基类

public:                             //基类公用成员

  void get_value();

  void display( );

 protected :                         //基类保护成员

    int num;

    char name[10];

    char sex;

;

  

void Student::get_value()

 cin>>num>>name>>sex;

 

void Student::display( )

 cout<<"num: "<<num<<endl;

  cout<<"name:"<<name<<endl;

  cout<<"sex:"<<sex<<endl;

 

 

class Student1: protected Student              //声明一个公用派生类

public:

   void get_value_1();

   void display1( );

 private:

   int age;                          

   char addr[30];

;

 

void Student1::get_value_1()

 cin>>age>>addr;

 

void Student1::display1( )

  cout<<"age:"<<age<<endl;

   cout<<"address:"<<addr<<endl;

  

 

int main( )

 Student1 stud1;                      //stud1是派生类student1类的对象

  stud1.get_value();

stud1.get_value_1();

  stud1.display( );

  stud1.display1();                  //合法。display1是派生类中的公用成员函数

  return 0;

 

5:

class A                   //A为基类

public:

  void f1( );

  int i;

 protected:

  void f2();

  int j;

 private:

  int k;

;

 

class B: public A            //B为A的公用派生类

public:

  void f3( );

 protected:

  int m;

 private:

  int n;

;

 

class C: public B              //C为B的公用派生类

public:

  void f4();

 private:

  int p;

;

 

int main()

A a1;                         //a1是基类A的对象

 B b1;                         //b1是派生类B的对象

 C//c1是派生类C的对象

 return 0;

6:

#include <iostream>

using namespace std;

class A

public:

  void f1( );

 protected:

  void f2();

 private:

  int i;

;

 

class B: public A

public:

  void f3( );

  int k;

 private:

  int m;

;

 

class C: protected B

public:

  void f4();

 protected:

  int n;

 private:

  int p;

;

 

class D: private C

public:

  void f5();

 protected:

  int q;

 private:

  int r;

;

 

int main()

A a1;

 B b1;

     C c1;

 D d1;

 return 0;

7:

#include <iostream>

using namespace std;

class A

 

  public:

   A()a=0;b=0;

   A(int i)a=i;b=0;

   A(int i,int j)a=i;b=j;

   void display()cout<<"a="<<a<<" b="<<b;

  private:

   int a;

   int b;

 ;

 

class B  : public A

 

  public:

   B()c=0;

   B(int i):A(i)c=0;

   B(int i,int j):A(i,j)c=0;

   B(int i,int j,int k):A(i,j)c=k;

   void display1()

    display();

     cout<<" c="<<c<<endl;

    

   private:

    int c;

;

 

int main()

  B b1;

    B b2(1);

    B b3(1,3);

    B b4(1,3,5);

    b1.display1();

         b2.display1();

    b3.display1();

    b4.display1();

return 0;

8:

#include <iostream>

using namespace std;

class A

 

  public:

   A()cout<<"constructing A "<<endl;

   ~A()cout<<"destructing A "<<endl;

 ;

 

class B  : public A

 

  public:

   B()cout<<"constructing B "<<endl;

   ~B()cout<<"destructing B "<<endl;

;

 

class C  : public B

 

  public:

   C()cout<<"constructing C "<<endl;

   ~C()cout<<"destructing C "<<endl;

;

int main()

C c1;

  return 0;

           9:

#include<string>

#include <iostream>

using namespace std;

class Teacher

 public:

   Teacher(string nam,int a,char s,string tit,string ad,string t);

   void display();

  protected:

    string name;

    int age;

    char sex;

    string title;

    string addr;

    string tel;

;

 

Teacher::Teacher(string nam,int a,char s,string tit,string ad,string t):

     name(nam),age(a),sex(s),title(tit),addr(ad),tel(t)

void Teacher::display()

     cout<<"name:"<<name<<endl;

      cout<<"age"<<age<<endl;

      cout<<"sex:"<<sex<<endl;

      cout<<"title:"<<title<<endl;

      cout<<"address:"<<addr<<endl;

      cout<<"tel:"<<tel<<endl;

      

 

class Cadre

 public:

Cadre(string nam,int a,char s,string p,string ad,string t);

   void display();

  protected:

   string name;

   int age;

   char sex;

   string post;

   string addr;

   string tel;

 ;

 

Cadre::Cadre(string nam,int a,char s,string p,string ad,string t):

     name(nam),age(a),sex(s),post(p),addr(ad),tel(t)

 

void Cadre::display()

    cout<<"name:"<<name<<endl;

     cout<<"age:"<<age<<endl;

     cout<<"sex:"<<sex<<endl;

     cout<<"post:"<<post<<endl;

     cout<<"address:"<<addr<<endl;

     cout<<"tel:"<<tel<<endl;

    

 

class Teacher_Cadre:public Teacher,public Cadre

 public:

   Teacher_Cadre(string nam,int a,char s,string tit,string p,string ad,string t,float w);

   void show( );

  private:

    float wage;

 ;

 

Teacher_Cadre::Teacher_Cadre(string nam,int a,char s,string t,string p,string ad,string tel,float w):

  Teacher(nam,a,s,t,ad,tel),Cadre(nam,a,s,p,ad,tel),wage(w)

void Teacher_Cadre::show( )

    Teacher::display();

     cout<<"post:"<<Cadre::post<<endl;

     cout<<"wages:"<<wage<<endl;

     

 

int main( )

 Teacher_Cadre te_ca("Wang-li",50,‘f‘,"prof.","president","135 Beijing Road,Shanghai","(021)61234567",1534.5);

  te_ca.show( );

  return 0;

10:

#include <iostream>

#include <cstring>

using namespace std;

class Teacher                                //教师类

 public:

  Teacher(int,char [],char);               //声明构造函数

    void display();                          //声明输出函数

  private:

   int num;

   char name[20];

   char sex;

  ;

 

Teacher::Teacher(int n,char nam[],char s)    //定义构造函数

 num=n;

  strcpy(name,nam);

  sex=s;

 

void Teacher::display()                      //定义输出函数

 cout<<"num:"<<num<<endl;

  cout<<"name:"<<name<<endl;

  cout<<"sex:"<<sex<<endl;

 

class BirthDate                               //生日类

 public:

    BirthDate(int,int,int);                   //声明构造函数

    void display();                           //声明输出函数

    void change(int,int,int);                 //声明修改函数

  private:

    int year;

    int month;

    int day;

;

 

BirthDate::BirthDate(int y,int m,int d)       //定义构造函数

 year=y;

  month=m;

  day=d;

 

 

void BirthDate::display()                     //定义输出函数

 cout<<"birthday:"<<month<<"/"<<day<<"/"<<year<<endl;

 

void BirthDate::change(int y,int m,int d)     //定义修改函数

 year=y;

  month=m;

  day=d;

 

 

class Professor:public Teacher                         //教授类

 public:

    Professor(int,char [],char,int,int,int,float);    //声明构造函数

    void display();                                   //声明输出函数

    void change(int,int,int);                         //声明修改函数

   private:

    float area;

    BirthDate birthday;                               //定义BirthDate类的对象作为数据成员

 ;

 

Professor::Professor(int n,char nam[20],char s,int y,int m,int d,float a):

 Teacher(n,nam,s),birthday(y,m,d),area(a)          //定义构造函数

 

void Professor::display()                             //定义输出函数

Teacher::display();

 birthday.display();

 cout<<"area:"<<area<<endl;

 

void Professor::change(int y,int m,int d)             //定义修改函数

 birthday.change(y,m,d);

 

 

int main()

Professor prof1(3012,"Zhang",‘f‘,1949,10,1,125.4);   //定义Professor对象prof1

 cout<<endl<<"original data:"<<endl;

 prof1.display();                                     //调用prof1对象的display函数

 cout<<endl<<"new data:"<<endl;

 prof1.change(1950,6,1);                              //调用prof1对象的change函数

 prof1.display();                                     //调用prof1对象的display函数

 return 0;

以上是关于c++面向对象程序设计 谭浩强 第五章答案的主要内容,如果未能解决你的问题,请参考以下文章

c++面向对象程序设计 谭浩强 第一章答案

c++面向对象程序设计 谭浩强 第三章答案

c++面向对象程序设计 谭浩强 第二章答案

谭浩强C程序设计第五版课后答案视频+代码讲解完整版(合集)持续跟新中~~~

谭浩强C程序设计第五版课后答案视频+代码讲解完整版(合集)持续跟新中~~~

C程序设计(谭浩强)第五版课后题答案 第六章