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

Posted suibian1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;

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

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

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

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

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

C语言程序设计第五版 谭浩强 第五版课后答案

谭浩强版C语言程序设计(第三版)课后习题完整答案附源码--高等教育出版社