#include
#include
typedef struct fushu//抽象数据类型定义
{
float real;//数据对象
float image;
}fushu;
fushu ComplexNumberInput(float a,float b)//构造二元组{
fushu c;
c.real=a;//实部
c.image=b;//虚部
return(c);
}
fushu ComplexNumberAdd(fushu c1,fushu c2)//求和运算{
fushu sum;
sum.real=c1.real+c2.real;
sum.image=c1.image+c2.image;
return (sum);
}
fushu ComplexNumberSub(fushu c1,fushu c2)//求差运算{
fushu sub;
sub.real=c1.real-c2.real;
sub.image=c1.image-c2.image;
return (sub);
}
fushu ComplexNumberMul(fushu c1,fushu c2)//求积运算{
fushu Mul;
Mul.real=c1.real*c2.real-c1.image*c2.image;
Mul.image=c1.real*c2.image+c1.image*c2.real;
return (Mul);
}
fushu ComplexNumberDiv(fushu c1,fushu c2)//求商运算{
fushu div;
float d1,d2,d3,d4;
d1=c1.real*c2.real+c1.image*c2.image;
d2=c2.real*c2.real+c2.image*c2.image;
d3=c1.image*c2.real-c1.real*c2.image;
d4=c2.real*c2.real+c2.image*c2.image;
if(d2!=0&&d4!=0)
{
div.real=d1/d2;
div.image=d3/d4;
return(div);
}
else
{
div.real=0;
div.image=0;
return(div);
}
}
void ComplexNumberOutput(fushu c)//输出运算结果
{
if(c.real==0.0&&c.image==0.0) printf("0\n");
if(c.real==0.0&&c.image!=0.0) printf("%fi\n",c.image);
if(c.real!=0.0&&c.image==0.0) printf("%f\n",c.real);
if(c.real!=0.0&&c.image!=0.0) printf("%f+(%fi)\n",c.real,c.image); }
void main()//主函数
{
int choice;
int k;
float a1,a2,b1,b2;
struct fushu c1,c2,sum,sub,mult,div;
printf("欢迎进行复数的基本代数运算\n");
printf("1: 复数加法运算\n");
printf("2: 复数减法运算\n");
printf("3: 复数乘法运算\n");
printf("4: 复数除法运算\n");
printf("0: 推出系统\n");
printf("请分别输入第一个复数的实部和虚部: ");
scanf("%f%f",&a1,&b1);
c1 = ComplexNumberInput(a1,b1);
printf("第一个复数为: ");
ComplexNumberOutput(c1);
printf("请分别输入第二个复数的实部和虚部: ");
scanf("%f%f",&a2,&b2);
c2 = ComplexNumberInput(a2,b2);
printf("第二个复数为: ");
ComplexNumberOutput(c2);
for(;;)
{
printf("请输入你选择的功能: ");
scanf("%d",&choice);
switch(choice)
{
case 0:exit(0);
break;
case 1:sum = ComplexNumberAdd(c1,c2);
printf("求和后结果为: ");
ComplexNumberOutput(sum);
break;
case 2:sub = ComplexNumberSub(c1,c2);
printf("求差后结果为: ");
ComplexNumberOutput(sub);
break;
case 3:mult = ComplexNumberMul(c1,c2);
printf("求积后结果为: ");
ComplexNumberOutput(mult );
break;
case 4:div=ComplexNumberDiv(c1,c2);
if(div.real!=0&&div.image!=0)
{
printf("求商后结果: ");
ComplexNumberOutput(div);
break;
}
else
{
printf("除零错误,请重新输入第二个复数;\n");
k=0;
exit(k);
}
}
}
}
本文档为【复数的基本运算(C语言)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。