C++编写复数四则运算程序

C++编写复数四则运算程序

1.知识储备——什么是复数?

	复数x被定义为二元有序实数对(a,b) ,记为z=a+bi,这里a和b是实数,i是虚数单位。
在复数a+bi中,a=Re(z)称为实部,b=Im(z)称为虚部。当虚部等于零时,这个复数可以视为实数;
当z的虚部不等于零时,实部等于零时,常称z为纯虚数。

如:Z=a+bi;(a为实部,bi为虚部)

2.如何着手编写程序?

	首先,明确怎样表示复数的结构,我们已知复数包含实部和虚部两部分,我们要将两部分同时表示出来,
就要使用到常用的“结构体”表示数据,包含实部数、虚部数两部分。
	其次,明确复数的运算法则,如下图所示,在这里我们仅用“复数运算的代数运算法则”进行程序编写。

复数计算公式

3.程序编写

**(1)导入要使用的头文件、声明命名空间并定义复数结构。**
	 注意:因为数值的运算并不一定是整数,如除法时得到的为小数,因此将数据类型定义为float型,
	 若需求精度更高也可以定义为double型,根据需要而定。
	#include<iostream>
	using namespace std;
	
	typedef struct{
		float realpart;  //实部数
		float imagpart; //虚部数
	}complex;          //complex表示复数


**(2)创建复数输入函数。**
	这里我们采用“引用传递”形式传递实参。
	 void Icomplex(complex &z){
		cin>>z.realpart;//输入实部数
		cin>>z.imagpart; //输入虚部数
}

**(3)创建输出复数的函数。**
		因为复数格式为“Z=a+bi”,分为实部和虚部,同时数字又具有正负性,因此要使用if语句对数值正负加以判断。
	 	特别说明:复数的虚部末尾有虚数单位“i”,当虚部b不为0时要加上i,不能忽略。
	 
	void Pcomplex(complex &z){
		if(z.imagpart>=0) //判断虚数的正负,决定输入符号的形式
			cout<<z.realpart<<"+"<<z.imagpart<<"i"<<"\n";
        else{
			cout<<z.realpart<<z.imagpart<<"i"<<"\n";
			cout<<endl;//换行
}

**(4)创建复数求和函数。**
		复数的加法法则为:(a+bi)+(c+di)=(a+c)+(b+d)i,可以看出复数相加为实部、虚部分别对应相加。
		因为我们进行的是复数运算,传递的参数也为复数类型,因此定义两个复数形参z1,z2作为形参。
	void Jcomplex(complex z1,complex z2){
		complex Jsum;//接收结果的复数变量
		Jsum.realpart=z1.realpart+z2.realpart;//求实部
		Jsum.imagpart=z1.imagpart+z2.imagpart;//求虚部
		Pcomplex(Jsum);//调用输出函数
}
 

**(5)创建复数求差函数。**
		复数的减法法则为:(a+bi)-(c+di)=(a-c)+(b-d)i;,可以看出复数相减为实部、虚部分别对应相减。
		同理,定义两个复数形参z1,z2作为形参。
		void Scomplex(complex z1,complex z2){
			complex Ssum;//接收结果的复数变量
			Ssum.realpart=z1.realpart-z2.realpart;//求实部
			Ssum.imagpart=z1.imagpart-z2.imagpart;//求虚部
			Pcomplex(Ssum);//调用输出函数
	}


**(6)创建复数求乘积函数。**
		复数的乘法法则为:(a+bi)·(c+di)=(ac-bd)+(bc+ad)i,根据乘法法则分别是实部乘积作差和虚部乘积作差。
		同理,定义两个复数形参z1,z2作为形参。
		void Xcomplex(complex z1,complex z2){
			complex Xsum;//接收结果的复数变量
			Xsum.realpart=((z1.realpart*z2.realpart)-	(z1.imagpart*z2.imagpart));//求实部
			Xsum.imagpart=((z1.realpart*z2.imagpart)+(z1.imagpart*z2.realpart));//求虚部
	Pcomplex(Xsum);//调用输出函数
}


**(7)创建复数求除商函数。**
		复数的除法法则为:(a+bi)÷(c+di)=[(ac+bd)/(c²+d²)]+[(bc-ad)/(c²+d²)]i,根据乘法法则先进行分式转化,再分别求解。
		同理,定义两个复数形参z1,z2作为形参。
		void Ccomplex(complex z1,complex z2){
			complex Csum;//接收结果的复数变量
			Csum.realpart=(((z1.realpart*z2.realpart)+(z1.imagpart*z2.imagpart))/((z2.realpart*z2.realpart)+(z2.imagpart*z2.imagpart)));//求实部
			Csum.imagpart=(((z1.imagpart*z2.realpart)-(z1.realpart*z2.imagpart))/((z2.realpart*z2.realpart)+(z2.imagpart*z2.imagpart)));//求虚部
			Pcomplex(Csum);//调用输出函数
}

**(8)创建主函数。**
	特别说明:不同的编译器主函数的返回值类型初始定义可能不同,修改返回值类型即可。
	如DevCpp定义为int mian,而VC++6.0则为void main。
	int main(){
		complex z,z1,z2;//定义三个结构体类型变量
		cout<<"请输入复数Z1的实部和虚部:"<<endl;
		Icomplex(z1);
		cout<<"请输入复数Z2的实部和虚部:"<<endl;
		Icomplex(z2);
		cout<<endl; //换行
		//进行运算
		cout<<"z1、z2和为:"<<endl; 
		Jcomplex(z1,z2);//求和
		cout<<"z1、z2差为:"<<endl;
		Scomplex(z1,z2);//求差
		cout<<"z1、z2乘积为:"<<endl;
		Xcomplex(z1,z2);//求乘积
		cout<<"z1、z2除商:"<<endl;
		Ccomplex(z1,z2);//求除
	}

4.程序运行结果如下所示:
程序运行结果

5.小结

	编写程序前需要弄明白复数运算法则以及数据类型和可能出现的情况,这样才能更快速、高效的编写程序,
希望本篇文章能对你有所帮助。

**

> 声明:原创不易,若要转载请注明出处,违者必究。

**

  • 9
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等日出看彩虹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值