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;
}
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;
}
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;
}
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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值