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<<"\nname:"<<name<<"\nsex:"<<sex<<"\nscore:"<<score<<"\n\n";}

 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<<"\nname:"<<name<<"\nsex:"<<sex<<"\npay:"<<pay<<"\n\n";}

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;

}

猜你喜欢

转载自www.cnblogs.com/suibian1/p/10987301.html