复数的加减乘除,学校的作业。

注意

复数乘法(a+bi)(c+di)=( ac-bd)+(bc+ad)i;
复数除法(a+bi)/(c+di)=(ac+bd)/(c2+d2) +((bc-ad)/(c2+d2))i;
以及输入0的情况。

#include "stdio.h"
#include "stdlib.h"
typedef struct complex{
float e1;//实部
float e2;//虚部
}complex;
complex initcomplex(float x,float y)
{
	complex z1;
  z1.e1=x;
  z1.e2=y;
  return z1;
}
void addcomplex(complex &z,complex z1,complex z2)//sum
{ 

  z.e1=z1.e1+z2.e1;
  z.e2=z1.e2+z2.e2;
  
}
void subcomplex(complex &z,complex z1,complex z2)//subtraction
{
	z.e1=z1.e1-z2.e1;
  z.e2=z1.e2-z2.e2;
	}
void mulcomplex(complex &z,complex z1,complex z2)//multplication
{
  z.e1=z1.e1*z2.e1-z1.e2*z2.e2;
  z.e2=z1.e2*z2.e1+z2.e2*z1.e1;
	}	
void divcomplex(complex &z,complex z1,complex z2)//division
{
  z.e1=(z1.e1*z2.e1+z1.e2*z2.e2)/(z2.e2*z2.e2+(z2.e1*z2.e1));
  z.e2=(z1.e2*z2.e1-z2.e2*z1.e1)/(z2.e2*z2.e2+z2.e1*z2.e1);
	}
void outputcomplex(complex z)//out  data
{
 if(z.e1!=0&&z.e2!=0)
 printf("%.2f+%.2fi\n",z.e1,z.e2);
 else if(z.e1!=0&&z.e2==0)
 printf("%.2f\n",z.e1);
else if(z.e1==0&&z.e2!=0)
 printf("%.2fi\n",z.e2);

else if(z.e1==0&&z.e2==0)
  printf("%d\n",0);
 
}
int main()
{
complex z1,z2,z;
float x,y;
int a=0;
printf("请输入第一个复数\n");
scanf("%f%f",&x,&y);
z1=initcomplex(x,y);
outputcomplex(z1);
printf("请输入第二个复数\n");
scanf("%f%f",&x,&y);
z2=initcomplex(x,y);
outputcomplex(z2);
do{

printf("请选择1加法\n 2减法\n 3乘法\n 4除法\n 0退出复数计算器\n");
scanf("%d",&a);
 switch (a)
        {
        case 1:
            addcomplex(z,z1,z2);
            outputcomplex(z);
            break;
        case 2:
            subcomplex(z,z1,z2);
            outputcomplex(z);
            break;
        case 3:
            mulcomplex(z,z1,z2);
            outputcomplex(z);
            break;
        case 4:
           divcomplex(z,z1,z2);
           outputcomplex(z);
            break;
        default:
            if (a == 0)
            {
                printf("谢谢使用");
            }
            else
            {
                printf("输入的操作有误,请您重新输入");
            }
        }
    }while(a!=0);
    
return 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值