zoukankan      html  css  js  c++  java
  • c++面向对象程序设计 课后题 答案 谭浩强 第四章

    c++面向对象程序设计课后题答案 谭浩强 第四章

    1:

    #include <iostream>

    using namespace std;

    class Complex

     {public:

       Complex(){real=0;imag=0;}

       Complex(double r,double i){real=r;imag=i;}

       double get_real();

       double get_imag();

       void display();

      private:

       double real;

       double imag;

     };

    double Complex::get_real()

    {return real;}

    double Complex::get_imag()

    {return imag;}

    void Complex::display()

    {cout<<"("<<real<<","<<imag<<"i)"<<endl;}

    Complex operator + (Complex &c1,Complex &c2)

    {

     return Complex(c1.get_real()+c2.get_real(),c1.get_imag()+c2.get_imag());

    }

    int main()

    {Complex c1(3,4),c2(5,-10),c3;

     c3=c1+c2;

     cout<<"c3=";

     c3.display();

     return 0;

    }

    c++面向对象程序设计课后题答案 谭浩强 

    2:

    #include <iostream>

    using namespace std;

    class Complex

     {public:

       Complex(){real=0;imag=0;}

       Complex(double r,double i){real=r;imag=i;}

       Complex operator+(Complex &c2);

       Complex operator-(Complex &c2);

       Complex operator*(Complex &c2);

       Complex operator/(Complex &c2);

       void display();

      private:

       double real;

       double imag;

     };

    Complex Complex::operator+(Complex &c2)

    {Complex c;

     c.real=real+c2.real;

     c.imag=imag+c2.imag;

     return c;}

    Complex Complex::operator-(Complex &c2)

    {Complex c;

     c.real=real-c2.real;

     c.imag=imag-c2.imag;

     return c;}

    Complex Complex::operator*(Complex &c2)

    {Complex c;

     c.real=real*c2.real-imag*c2.imag;

     c.imag=imag*c2.real+real*c2.imag;

     return c;}

    Complex Complex::operator/(Complex &c2)

    {Complex c;

     c.real=(real*c2.real+imag*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag);

     c.imag=(imag*c2.real-real*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag);

     return c;}

    void Complex::display()

    {cout<<"("<<real<<","<<imag<<"i)"<<endl;}

    int main()

    {Complex c1(3,4),c2(5,-10),c3;

     c3=c1+c2;

     cout<<"c1+c2=";

     c3.display();

     c3=c1-c2;

     cout<<"c1-c2=";

     c3.display();

     c3=c1*c2;

     cout<<"c1*c2=";

     c3.display();

     c3=c1/c2;

     cout<<"c1/c2=";

     c3.display();

     return 0;

    }

    c++面向对象程序设计课后题答案 谭浩强

    3:

    #include <iostream>        //用VC++时改为∶ #include <iostream.h>

    using namespace std;      //用VC++时为取消此行

    class Complex

     {public:

       Complex(){real=0;imag=0;}

       Complex(double r,double i){real=r;imag=i;}

       Complex operator+(Complex &c2);

       Complex operator+(int &i);

       friend Complex operator+(int&,Complex &);

       void display();

      private:

       double real;

       double imag;

    };

    Complex Complex::operator+(Complex &c)

    {return Complex(real+c.real,imag+c.imag);}

    Complex Complex::operator+(int &i)

    {return Complex(real+i,imag);}

    void Complex::display()

    {cout<<"("<<real<<","<<imag<<"i)"<<endl;}

    Complex operator+(int &i,Complex &c)

    {return Complex(i+c.real,c.imag);}

    int main()

    {Complex c1(3,4),c2(5,-10),c3;

     int i=5;

     c3=c1+c2;

     cout<<"c1+c2=";

     c3.display();

     c3=i+c1;

     cout<<"i+c1=";

     c3.display();

     c3=c1+i;

     cout<<"c1+i=";

     c3.display();

     return 0;

    }

    谭浩强

    4:

    #include <iostream>

    using namespace std;

    class Matrix                                          //定义Matrix类

     {public:

    Matrix();                                          //默认构造函数

       friend Matrix operator+(Matrix &,Matrix &);        //重载运算符“+”

       void input();                                      //输入数据函数

       void display();                                    //输出数据函数

      private:

       int mat[2][3];

     };

    Matrix::Matrix()                                      //定义构造函数

    {for(int i=0;i<2;i++)

      for(int j=0;j<3;j++)

       mat[i][j]=0;

    }

    Matrix operator+(Matrix &a,Matrix &b)                //定义重载运算符“+”函数

    {Matrix c;

     for(int i=0;i<2;i++)

       for(int j=0;j<3;j++)

         {c.mat[i][j]=a.mat[i][j]+b.mat[i][j];}

     return c;

    }

    void Matrix::input()                                   //定义输入数据函数

    {cout<<"input value of matrix:"<<endl;

     for(int i=0;i<2;i++)

      for(int j=0;j<3;j++)

       cin>>mat[i][j];

    }

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

    {for (int i=0;i<2;i++)

    {for(int j=0;j<3;j++)

       {cout<<mat[i][j]<<" ";}

        cout<<endl;}

    }

    int main()

    {Matrix a,b,c;

     a.input();

     b.input();

     cout<<endl<<"Matrix a:"<<endl;

     a.display();

     cout<<endl<<"Matrix b:"<<endl;

     b.display();

     c=a+b;                                         //用重载运算符“+”实现两个矩阵相加

     cout<<endl<<"Matrix c = Matrix a + Matrix b :"<<endl;

     c.display();

     return 0;

    }

    c++面向对象程序设计课后题答案

    5:

    #include <iostream.h>

    //using namespace std;

    class Matrix

     {public:

       Matrix();

       friend Matrix operator+(Matrix &,Matrix &);

       friend ostream& operator<<(ostream&,Matrix&);

       friend istream& operator>>(istream&,Matrix&);

      private:

       int mat[2][3];

     };

    Matrix::Matrix()

    {for(int i=0;i<2;i++)

      for(int j=0;j<3;j++)

       mat[i][j]=0;

    }

    Matrix operator+(Matrix &a,Matrix &b)

    {Matrix c;

     for(int i=0;i<2;i++)

       for(int j=0;j<3;j++)

         {c.mat[i][j]=a.mat[i][j]+b.mat[i][j];

         }

     return c;

    }

    istream& operator>>(istream &in,Matrix &m)

    {cout<<"input value of matrix:"<<endl;

     for(int i=0;i<2;i++)

      for(int j=0;j<3;j++)

       in>>m.mat[i][j];

     return in;

    }

    ostream& operator<<(ostream &out,Matrix &m)

    {for (int i=0;i<2;i++)

      {for(int j=0;j<3;j++)

       {out<<m.mat[i][j]<<" ";}

        out<<endl;}

     return out;

    }

    int main()

    { Matrix a,b,c;

     cin>>a;

     cin>>b;

     cout<<endl<<"Matrix a:"<<endl<<a<<endl;

    cout<<endl<<"Matrix b:"<<endl<<b<<endl;

     c=a+b;

     cout<<endl<<"Matrix c = Matrix a + Matrix b :"<<endl<<c<<endl;

     return 0;

    }

    6:

    #include <iostream>

    using namespace std;

    class Complex

     {public:

       Complex(){real=0;imag=0;}

       Complex(double r){real=r;imag=0;}

       Complex(double r,double i){real=r;imag=i;}

       operator double(){return real;}

       void display();

      private:

       double real;

       double imag;

     };

    void Complex::display()

    {cout<<"("<<real<<", "<<imag<<")"<<endl;}

    int main()

    {Complex c1(3,4),c2;

     double d1;

     d1=2.5+c1;

     cout<<"d1="<<d1<<endl;

     c2=Complex(d1);

     cout<<"c2=";

     c2.display();

     return 0;

    }

    7:

    #include <iostream>

    using namespace std;

    class Student

    {public:

    Student(int,char[],char,float);

      int get_num(){return num;}

      char * get_name(){return name;}

      char get_sex(){return sex;}

      void display()

       {cout<<"num:"<<num<<" name:"<<name<<" sex:"<<sex<<" score:"<<score<<" ";}

     private:

      int num;

      char name[20];

      char sex;

      float score;

    };

    Student::Student(int n,char nam[],char s,float so)

     {num=n;

      strcpy(name,nam);

      sex=s;

      score=so;

    }

    class Teacher

     {public:

      Teacher(){}

      Teacher(Student&);

       Teacher(int n,char nam[],char sex,float pay);

       void display();

      private:

       int num;

       char name[20];

       char sex;

       float pay;

    };

    Teacher::Teacher(int n,char nam[],char s,float p)

    {num=n;

     strcpy(name,nam);

     sex=s;

     pay=p;

    }

    Teacher::Teacher(Student& stud)

     {num=stud.get_num();

      strcpy(name,stud.get_name());

      sex=stud.get_sex();

      pay=1500;}

    void Teacher::display()

    {cout<<"num:"<<num<<" name:"<<name<<" sex:"<<sex<<" pay:"<<pay<<" ";}

    int main()

    {Teacher teacher1(10001,"Li",'f',1234.5),teacher2;

     Student student1(20010,"Wang",'m',89.5);

     cout<<"student1:"<<endl;

     student1.display();

     teacher2=Teacher(student1);

     cout<<"teacher2:"<<endl;

     teacher2.display();

     return 0;

    }

  • 相关阅读:
    记一次干扰后处理特效的实现
    Cosine-Weighted采样算法
    PBR技术简介(三):菲涅尔公式
    PBR技术简介(二):Cook-Torrance BRDF
    PBR技术简介(一)
    Python函数的默认参数坑点解析
    屏幕空间环境光屏蔽(SSAO)探秘
    辐射度量学简介(二)
    辐射度量学简介(一)
    解决16bit压缩贴图失真问题
  • 原文地址:https://www.cnblogs.com/suibian1/p/10987301.html
Copyright © 2011-2022 走看看