复数的加减乘除

//有问题欢迎请教!
/复数的加减乘除计算/
/感觉还要未知的bug存在/
#include <stdio.h>
#include <windows.h>
#include <conio.h>

typedef struct Complex{ //创建结构体,目的储存计算后结果。
float Realpart;//实部
float Imagepart;//虚部
}Complex;

void read(float real1, float real2, float image1, float image2)
{
haha:
char choose[10];
printf(“请输入第一个复数的实部(形成a+bi形式)\n (please enter the realpart of the first complex number):\n”);
scanf("%f",real1);
printf(“请再次输入第一个复数的虚部\n (please enter the imaginary part of the first complex number):\n”);
scanf("%f",image1);
printf("\n你所输入的第一个复数实部为%.0f,虚部为%.0f\n",real1,image1);
printf(“请输入第二个复数的实部(形成a+bi形式)\n (please enter the realpart of the second complex number):\n”);
scanf("%f",real2);
printf(“请再次输入第二个复数的虚部\n (please enter the imaginary part of the second complex number):\n”);
scanf("%f",image2);
printf("\n你所输入的第二个复数实部为%.0f,虚部为%.0f\n",real2,image2);
printf(“您确认为这两个复数吗?yes or no \n”);
printf("***if you choose “yes”,we will go on ! *** \n
if you choose “no” ,we will restart ! ***\n
if you input others,we will quit !
*\n");
fflush(stdin);
gets(choose);
if(strcmp(“yes”,choose)==0)
return;
else if(strcmp(“no”,choose)==0)
goto haha;//回到13行,询问是否输入
else
{
printf("!!!error!!!\n");
printf(“please re-enter !\n”);
goto haha;//重新输入,回到13行,再次询问是否输入
}

}
Complex Add(Complex C1, Complex C2)//加法
{
//
float re1, re2, im1, im2;
Complex sum;
read(&re1,&re2,&im1,&im2);
sum.Realpart=re1+re2;
sum.Imagepart=im1+im2;
if(sum.Imagepart>0 && im1>=0 && im2>=0 && sum.Realpart!=0)
printf(“复数%.0f+%.0fi与复数%.0f+%.0fi的和为%.0f+%.0fi\n”,re1,im1,re2,im2,sum.Realpart,sum.Imagepart);
if(sum.Imagepart>0 && im1>=0 && im2<0 && sum.Realpart!=0)
printf(“复数%.0f+%.0fi与复数%.0f%.0fi的和为%.0f+%.0fi\n”,re1,im1,re2,im2,sum.Realpart,sum.Imagepart);
if(sum.Imagepart>0 && im1<=0 && im2>=0 && sum.Realpart!=0)
printf(“复数%.0f%.0fi与复数%.0f+%.0fi的和为%.0f+%.0fi\n”,re1,im1,re2,im2,sum.Realpart,sum.Imagepart);
if(sum.Imagepart>0 && im1<=0 && im2<0 && sum.Realpart!=0)
printf(“复数%.0f%.0fi与复数%.0f%.0fi的和为%.0f+%.0fi\n”,re1,im1,re2,im2,sum.Realpart,sum.Imagepart);
if(sum.Imagepart<0 && im1>=0 && im2>=0 && sum.Realpart!=0)
printf(“复数%.0f+%.0fi与复数%.0f+%.0fi的和为%.0f%.0fi\n”,re1,im1,re2,im2,sum.Realpart,sum.Imagepart);
if(sum.Imagepart<0 && im1<0 && im2>=0 && sum.Realpart!=0)
printf(“复数%.0f%.0fi与复数%.0f+%.0fi的和为%.0f%.0fi\n”,re1,im1,re2,im2,sum.Realpart,sum.Imagepart);
if(sum.Imagepart<0 && im1>=0 && im2<=0 && sum.Realpart!=0)
printf(“复数%.0f+%.0fi与复数%.0f%.0fi的和为%.0f%.0fi\n”,re1,im1,re2,im2,sum.Realpart,sum.Imagepart);
if(sum.Imagepart<0 && im1<0 && im2<=0 && sum.Realpart!=0)
printf(“复数%.0f%.0fi与复数%.0f%.0fi的和为%.0f%.0fi\n”,re1,im1,re2,im2,sum.Realpart,sum.Imagepart);
if(sum.Imagepart0 && im1>=0 && im2>=0 && sum.Realpart!=0)
printf(“复数%.0f+%.0fi与复数%.0f+%.0fi的和为%.0f\n”,re1,im1,re2,im2,sum.Realpart);
if(sum.Imagepart
0 && im1>=0 && im2<0 && sum.Realpart!=0)
printf(“复数%.0f+%.0fi与复数%.0f%.0fi的和为%.0f\n”,re1,im1,re2,im2,sum.Realpart);
if(sum.Imagepart0 && im1<0 && im2>=0 && sum.Realpart!=0)
printf(“复数%.0f%.0fi与复数%.0f+%.0fi的和为%.0f\n”,re1,im1,re2,im2,sum.Realpart);
if(sum.Imagepart
0 && im1<=0 && im2<0 && sum.Realpart!=0)
printf(“复数%.0f%.0fi与复数%.0f%.0fi的和为%.0f\n”,re1,im1,re2,im2,sum.Realpart);
if(sum.Realpart0 && im1>=0 && im2>=0 && sum.Imagepart!=0)
printf(“复数%.0f+%.0fi与复数%0.f+%.0fi的和为%.0fi\n”,re1,im1,re2,im2,sum.Imagepart);
if(sum.Realpart
0 && im1>=0 && im2<0 && sum.Imagepart!=0)
printf(“复数%.0f+%.0fi与复数%0.f%.0fi的和为%.0fi\n”,re1,im1,re2,im2,sum.Imagepart);
if(sum.Realpart0 && im1<0 && im2>=0 && sum.Imagepart!=0)
printf(“复数%.0f%.0fi与复数%0.f+%.0fi的和为%.0fi\n”,re1,im1,re2,im2,sum.Imagepart);
if(sum.Realpart
0 && im1<=0 && im2<0 && sum.Imagepart!=0)
printf(“复数%.0f%.0fi与复数%0.f%.0fi的和为%.0fi\n”,re1,im1,re2,im2,sum.Imagepart);
if(sum.Imagepart0 && sum.Realpart0)
printf(“复数%.0f+(%.0fi)与复数%.0f+(%.0fi)的和为0\n”,re1,im1,re2,im2);
return sum;
}
Complex Sub(Complex C1, Complex C2)//减法
{
//
float re1, re2, im1, im2;
Complex difference;
read(&re1,&re2,&im1,&im2);
difference.Realpart=re1-re2;
difference.Imagepart=im1-im2;
if(difference.Imagepart>0 && im1>=0 && im2>=0 && difference.Realpart!=0)
printf(“复数%.0f+%.0fi与复数%.0f+%.0fi的差为%.0f+%.0fi\n”,re1,im1,re2,im2,difference.Realpart,difference.Imagepart);
if(difference.Imagepart>0 && im1>=0 && im2<0 && difference.Realpart!=0)
printf(“复数%.0f+%.0fi与复数%.0f%.0fi的差为%.0f+%.0fi\n”,re1,im1,re2,im2,difference.Realpart,difference.Imagepart);
if(difference.Imagepart>0 && im1<=0 && im2>=0 && difference.Realpart!=0)
printf(“复数%.0f%.0fi与复数%.0f+%.0fi的差为%.0f+%.0fi\n”,re1,im1,re2,im2,difference.Realpart,difference.Imagepart);
if(difference.Imagepart>0 && im1<=0 && im2<0 && difference.Realpart!=0)
printf(“复数%.0f%.0fi与复数%.0f%.0fi的差为%.0f+%.0fi\n”,re1,im1,re2,im2,difference.Realpart,difference.Imagepart);
if(difference.Imagepart<0 && im1>=0 && im2>=0 && difference.Realpart!=0)
printf(“复数%.0f+%.0fi与复数%.0f+%.0fi的差为%.0f%.0fi\n”,re1,im1,re2,im2,difference.Realpart,difference.Imagepart);
if(difference.Imagepart<0 && im1<0 && im2>=0 && difference.Realpart!=0)
printf(“复数%.0f%.0fi与复数%.0f+%.0fi的差为%.0f%.0fi\n”,re1,im1,re2,im2,difference.Realpart,difference.Imagepart);
if(difference.Imagepart<0 && im1>=0 && im2<=0 && difference.Realpart!=0)
printf(“复数%.0f+%.0fi与复数%.0f%.0fi的差为%.0f%.0fi\n”,re1,im1,re2,im2,difference.Realpart,difference.Imagepart);
if(difference.Imagepart<0 && im1<0 && im2<=0 && difference.Realpart!=0)
printf(“复数%.0f%.0fi与复数%.0f%.0fi的差为%.0f%.0fi\n”,re1,im1,re2,im2,difference.Realpart,difference.Imagepart);
if(difference.Imagepart0 && im1>=0 && im2>=0 && difference.Realpart!=0)
printf(“复数%.0f+%.0fi与复数%.0f+%.0fi的差为%.0f\n”,re1,im1,re2,im2,difference.Realpart);
if(difference.Imagepart
0 && im1>=0 && im2<0 && difference.Realpart!=0)
printf(“复数%.0f+%.0fi与复数%.0f%.0fi的差为%.0f\n”,re1,im1,re2,im2,difference.Realpart);
if(difference.Imagepart0 && im1<0 && im2>=0 && difference.Realpart!=0)
printf(“复数%.0f%.0fi与复数%.0f+%.0fi的差为%.0f\n”,re1,im1,re2,im2,difference.Realpart);
if(difference.Imagepart
0 && im1<=0 && im2<0 && difference.Realpart!=0)
printf(“复数%.0f%.0fi与复数%.0f%.0fi的差为%.0f\n”,re1,im1,re2,im2,difference.Realpart);
if(difference.Realpart0 && im1>=0 && im2>=0 && difference.Imagepart!=0)
printf(“复数%.0f+%.0fi与复数%.0f+%.0fi的差为%.0fi\n”,re1,im1,re2,im2,difference.Imagepart);
if(difference.Realpart
0 && im1>=0 && im2<0 && difference.Imagepart!=0)
printf(“复数%.0f+%.0fi与复数%.0f%0.fi的差为%.0fi\n”,re1,im1,re2,im2,difference.Imagepart);
if(difference.Realpart0 && im1<0 && im2>=0 && difference.Imagepart!=0)
printf(“复数%.0f%.0fi与复数%.0fi+%0.fi的差为%.0fi\n”,re1,im1,re2,im2,difference.Imagepart);
if(difference.Realpart
0 && im1<=0 && im2<0 && difference.Imagepart!=0)
printf(“复数%.0f%.0fi与复数%.0f%0.fi的差为%.0fi\n”,re1,im1,re2,im2,difference.Imagepart);
if(difference.Imagepart0 && difference.Realpart0)
printf(“复数%.0f+(%.0fi)与复数%.0f+(%0.fi)的差为0\n”,re1,im1,re2,im2);
return difference;
}
Complex Mul(Complex C1, Complex C2)//乘法
{
//
float re1, re2, im1, im2;
read(&re1,&re2,&im1,&im2);
Complex ation;
ation.Realpart=re1re2-im1im2;//(a+bi)(c+di)=(ac-bd)+(bc+ad)i;
ation.Imagepart=im1
re2+re1im2;
if(ation.Imagepart>0 && im1>=0 && im2>=0 && ation.Realpart!=0)
printf(“复数%.0f+%.0fi与复数%.0f+%.0fi的乘积为%.0f+%.0fi\n”,re1,im1,re2,im2,ation.Realpart,ation.Imagepart);
if(ation.Imagepart>0 && im1<0 && im2>=0 && ation.Realpart!=0)
printf(“复数%.0f%.0fi与复数%.0f+%.0fi的乘积为%.0f+%.0fi\n”,re1,im1,re2,im2,ation.Realpart,ation.Imagepart);
if(ation.Imagepart>0 && im1>=0 && im2<=0 && ation.Realpart!=0)
printf(“复数%.0f+%.0fi与复数%.0f%.0fi的乘积为%.0f+%.0fi\n”,re1,im1,re2,im2,ation.Realpart,ation.Imagepart);
if(ation.Imagepart>0 && im1<0 && im2<=0 && ation.Realpart!=0)
printf(“复数%.0f%.0fi与复数%.0f%.0fi的乘积为%.0f+%.0fi\n”,re1,im1,re2,im2,ation.Realpart,ation.Imagepart);
if(ation.Imagepart<0 && im1>=0 && im2>=0 && ation.Realpart!=0)
printf(“复数%.0f+%.0fi与复数%.0f+%.0fi的乘积为%.0f%.0fi\n”,re1,im1,re2,im2,ation.Realpart,ation.Imagepart);
if(ation.Imagepart<0 && im1>=0 && im2<0 && ation.Realpart!=0)
printf(“复数%.0f+%.0fi与复数%.0f%.0fi的乘积为%.0f%.0fi\n”,re1,im1,re2,im2,ation.Realpart,ation.Imagepart);
if(ation.Imagepart<0 && im1<=0 && im2>=0 && ation.Realpart!=0)
printf(“复数%.0f%.0fi与复数%.0f+%.0fi的乘积为%.0f%.0fi\n”,re1,im1,re2,im2,ation.Realpart,ation.Imagepart);
if(ation.Imagepart<0 && im1<=0 && im2<0 && ation.Realpart!=0)
printf(“复数%.0f%.0fi与复数%.0f%.0fi的乘积为%.0f%.0fi\n”,re1,im1,re2,im2,ation.Realpart,ation.Imagepart);
if(ation.Realpart0 && im1>=0 && im2>=0 && ation.Imagepart!=0)
printf(“复数%.0f+%.0fi与复数%.0f+%.0fi的乘积为%.0fi\n”,re1,im1,re2,im2,ation.Imagepart);
if(ation.Realpart
0 && im1>=0 && im2<0 && ation.Imagepart!=0)
printf(“复数%.0+f%.0fi与复数%.0f%.0fi的乘积为%.0fi\n”,re1,im1,re2,im2,ation.Imagepart);
if(ation.Realpart0 && im1<0 && im2>=0 && ation.Imagepart!=0)
printf(“复数%.0f%.0fi与复数%.0f+%.0fi的乘积为%.0fi\n”,re1,im1,re2,im2,ation.Imagepart);
if(ation.Realpart
0 && im1<=0 && im2<0 && ation.Imagepart!=0)
printf(“复数%.0f%.0fi与复数%.0f%.0fi的乘积为%.0fi\n”,re1,im1,re2,im2,ation.Imagepart);
if(ation.Imagepart0 && im1>=0 && im2>=0 && ation.Realpart!=0)
printf(“复数%.0+f%.0fi与复数%.0f+%.0fi的乘积为%.0f\n”,re1,im1,re2,im2,ation.Realpart);
if(ation.Imagepart
0 && im1>=0 && im2<0 && ation.Realpart!=0)
printf(“复数%.0f%.0fi与复数%.0f%.0fi的乘积为%.0f\n”,re1,im1,re2,im2,ation.Realpart);
if(ation.Imagepart0 && im1<0 && im2>=0 && ation.Realpart!=0)
printf(“复数%.0f%.0fi与复数%.0f+%.0fi的乘积为%.0f\n”,re1,im1,re2,im2,ation.Realpart);
if(ation.Imagepart
0 && im1<=0 && im2<0 && ation.Realpart!=0)
printf(“复数%.0f%.0fi与复数%.0f%.0fi的乘积为%.0f\n”,re1,im1,re2,im2,ation.Realpart);
if(ation.Imagepart0 && ation.Realpart0)
printf(“复数%.0f+(%.0fi)与复数%.0f+(%.0fi)的乘积为0\n”,re1,im1,re2,im2);
return ation;
}
Complex Div(Complex C1, Complex C2)//除法
{
//
float re1, re2, im1, im2;
read(&re1,&re2,&im1,&im2);
Complex vs;
float inter;
vs.Realpart=(re1
re2+im1im2);//(a+bi)/(c+di)=(ac+bd)/(c2+d2)+((bc-ad)/(c2+d2))i
vs.Imagepart=(im1
re2-re1im2);
inter=(re2
re2+im2*im2);
if(re20 && im20)
{
printf(“分母为零,出现错误!(error !)\n”);
exit(0);
}
if(vs.Imagepart>0 && im1>=0 && im2>=0 && vs.Realpart!=0)
printf(“复数%.0f+%.0fi与复数%.0f+%.0fi的商为%.0f/%.0f+%.0fi/%.0f\n”,re1,im1,re2,im2,vs.Realpart,inter,vs.Imagepart,inter);
if(vs.Imagepart>0 && im1<0 && im2>=0 && vs.Realpart!=0)
printf(“复数%.0f%.0fi与复数%.0f+%.0fi的商为%.0f/%.0f+%.0fi/%.0f\n”,re1,im1,re2,im2,vs.Realpart,inter,vs.Imagepart,inter);
if(vs.Imagepart>0 && im1>=0 && im2<=0 && vs.Realpart!=0)
printf(“复数%.0f+%.0fi与复数%.0f%.0fi的商为%.0f/%.0f+%.0fi/%.0f\n”,re1,im1,re2,im2,vs.Realpart,inter,vs.Imagepart,inter);
if(vs.Imagepart>0 && im1<0 && im2<=0 && vs.Realpart!=0)
printf(“复数%.0f%.0fi与复数%.0f%.0fi的商为%.0f/%.0f+%.0fi/%.0f\n”,re1,im1,re2,im2,vs.Realpart,inter,vs.Imagepart,inter);
if(vs.Imagepart<0 && im1>=0 && im2>=0 && vs.Realpart!=0)
printf(“复数%.0f+%.0fi与复数%.0f+%.0fi的商为%.0f/%.0f%.0fi/%.0f\n”,re1,im1,re2,im2,vs.Realpart,inter,vs.Imagepart,inter);
if(vs.Imagepart<0 && im1>=0 && im2<0 && vs.Realpart!=0)
printf(“复数%.0f+%.0fi与复数%.0f%.0fi的商为%.0f/%.0f%.0fi/%.0f\n”,re1,im1,re2,im2,vs.Realpart,inter,vs.Imagepart,inter);
if(vs.Imagepart<0 && im1<=0 && im2>=0 && vs.Realpart!=0)
printf(“复数%.0f%.0fi与复数%.0f+%.0fi的商为%.0f/%.0f%.0fi/%.0f\n”,re1,im1,re2,im2,vs.Realpart,inter,vs.Imagepart,inter);
if(vs.Imagepart<0 && im1<=0 && im2<0 && vs.Realpart!=0)
printf(“复数%.0f%.0fi与复数%.0f%.0fi的商为%.0f/%.0f%.0fi/%.0f\n”,re1,im1,re2,im2,vs.Realpart,inter,vs.Imagepart,inter);
if(vs.Realpart0 && im1>=0 && im2>=0 && vs.Imagepart!=0)
printf(“复数%.0f+%.0fi与复数%.0f+%.0fi的商为%.0fi/%.0f\n”,re1,im1,re2,im2,vs.Imagepart,inter);
if(vs.Realpart
0 && im1>=0 && im2<0 && vs.Imagepart!=0)
printf(“复数%.0f+%.0fi与复数%.0f%.0fi的商为%.0fi/%.0f\n”,re1,im1,re2,im2,vs.Imagepart,inter);
if(vs.Realpart0 && im1<0 && im2>=0 && vs.Imagepart!=0)
printf(“复数%.0f%.0fi与复数%.0f+%.0fi的商为%.0fi/%.0f\n”,re1,im1,re2,im2,vs.Imagepart,inter);
if(vs.Realpart
0 && im1<0 && im2<=0 && vs.Imagepart!=0)
printf(“复数%.0f%.0fi与复数%.0f%.0fi的商为%.0fi/%.0f\n”,re1,im1,re2,im2,vs.Imagepart,inter);
if(vs.Imagepart0 && im1>=0 && im2>=0 && vs.Realpart!=0)
printf(“复数%.0f+%.0fi与复数%.0f+%.0fi的商为%.0f/%.0f\n”,re1,im1,re2,im2,vs.Realpart,inter);
if(vs.Imagepart
0 && im1>=0 && im2<0 && vs.Realpart!=0)
printf(“复数%.0f+%.0fi与复数%.0f%.0fi的商为%.0f/%.0f\n”,re1,im1,re2,im2,vs.Realpart,inter);
if(vs.Imagepart0 && im1<0 && im2>=0 && vs.Realpart!=0)
printf(“复数%.0f%.0fi与复数%.0f+%.0fi的商为%.0f/%.0f\n”,re1,im1,re2,im2,vs.Realpart,inter);
if(vs.Imagepart
0 && im1<=0 && im2<0 && vs.Realpart!=0)
printf(“复数%.0f%.0fi与复数%.0f%.0fi的商为%.0f/%.0f\n”,re1,im1,re2,im2,vs.Realpart,inter);
if(im10 && re10 && re2!=0 && im2!=0)
{
if(im2>0)
printf(“复数%.0f+%.0fi与复数%.0f+%.0fi的商为0”,re1,im1,re2,im2);
if(im2<0)
printf(“复数%.0f+%.0fi与复数%.0f%.0fi的商为0”,re1,im1,re2,im2);
}
return vs;
}
int main(void)
{
//
int key1;
Complex C1,C2;
printf(“本程序为计算复数的加减乘除!两秒后开始(Start in two seconds)\n”);
Sleep(2000);
system(“cls”);
printf(“请按下您需要选择的功能序号(please select):\n”);
printf(“1.加法(addition) 2.减法(subtraction)\n”);
printf(“3.乘法(multiplication) 4.除法(division)\n”);
scanf(" %d",&key1);
switch(key1)
{
case 1: printf(" ***** 复数的加法(Addition calculation of complex numbers) ***** \n"); Add(C1,C2); break;
case 2:printf(" ***** 复数的减法(Subtreaction calculation of complex numbers) ***** \n"); Sub(C1,C2); break;
case 3:printf(" ***** 复数的乘法(Multipliction calculation of complex numbers) ***** \n"); Mul(C1,C2); break;
case 4:printf(" ***** 复数的除法(Division calculation of complex numbers) ***** \n"); Div(C1,C2); break;
default: printf("\n 无该选项 ! error \n"); break;
}
return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值