数据结构之复数的四则运算
来源:互联网 发布:mac 修改系统版本号 编辑:程序博客网 时间:2024/05/16 06:55
#include <stdio.h>
#include <stdlib.h>
typedef struct Complex
{
float real;
float image;
}Complex;
Complex InitComplex(float a,float b)
{
Complex C;
C.real=a;
C.image=b;
return C;
}//创建复数
Complex Add(Complex a1,Complex a2)
{
Complex sum;
sum.real=a1.real+a2.real;
sum.image=a1.image+a2.image;
return sum;
}//加法:(a+bi)+(c+di)=(a+b)+(c+d)i
Complex Sub(Complex a1,Complex a2)
{
Complex dif;
dif.real=a1.real-a2.real;
dif.image=a1.image-a2.image;
return dif;
}//减法
Complex Mul(Complex a1,Complex a2)
{
Complex pro;
pro.real=a1.real*a2.real-a1.image*a2.image;
pro.image=a1.real*a2.image+a1.image*a2.real;
return pro;
}//乘法(a+bi)*(c+di)=(ac-bd)+(ad+bc)i
Complex Div(Complex a1,Complex a2)
{
Complex quo;
quo.real=0;
quo.image=0;
if (a2.real<1e-38&&a2.image<1e-38)
{
printf("a2 is 0!ERROR\n");
return quo;
}
quo.real=(a1.real*a2.real+a1.image*a2.image)/(a2.real*a2.real+a2.image*a2.image);
quo.image=(a2.real*a1.image-a1.real*a2.image)/(a2.real*a2.real+a2.image*a2.image);
return quo;
}//除法(a+bi)/(c+di)=(a+bi)*(c-di)/((c+di)*(c-di))=(a+bi)*(c-di)/(c*c+d*d)
float GetReal(Complex a)
{
return a.real;
}
float GetImage(Complex b)
{
return b.image;
}
void Print(Complex c)
{
if(GetReal(c)==0.0)
printf("%.2f\n",GetImage(c));
else if(GetImage(c)==0.0)
printf("%.2f\n",GetReal(c));
else
printf("%.2f+%.2fi\n",GetReal(c),GetReal(c));
}
void main()
{
Complex a,b,sum,dif,pro,quo;
float m,n;
int i;
char s;
for(i=0;;i++)
{
printf("请输入您所要进行的四则运算(+,-,*,/):");
scanf("%c",&s);
printf("请以a+bi形式输入两个数:");
scanf("%f+%fi",&m,&n);
a=InitComplex(m,n);
printf("请以c+di形式输入两个数:");
scanf("%f+%fi",&m,&n);
b=InitComplex(m,n);
switch(s)
{
case '+': sum=Add(a,b);Print(sum);break;
case '-': dif=Sub(a,b);Print(dif);break;
case '*': pro=Mul(a,b);Print(pro);break;
case '/': quo=Div(a,b);Print(quo);break;
default:printf("有误,请重新输入!");
}
}
#include <stdlib.h>
typedef struct Complex
{
float real;
float image;
}Complex;
Complex InitComplex(float a,float b)
{
Complex C;
C.real=a;
C.image=b;
return C;
}//创建复数
Complex Add(Complex a1,Complex a2)
{
Complex sum;
sum.real=a1.real+a2.real;
sum.image=a1.image+a2.image;
return sum;
}//加法:(a+bi)+(c+di)=(a+b)+(c+d)i
Complex Sub(Complex a1,Complex a2)
{
Complex dif;
dif.real=a1.real-a2.real;
dif.image=a1.image-a2.image;
return dif;
}//减法
Complex Mul(Complex a1,Complex a2)
{
Complex pro;
pro.real=a1.real*a2.real-a1.image*a2.image;
pro.image=a1.real*a2.image+a1.image*a2.real;
return pro;
}//乘法(a+bi)*(c+di)=(ac-bd)+(ad+bc)i
Complex Div(Complex a1,Complex a2)
{
Complex quo;
quo.real=0;
quo.image=0;
if (a2.real<1e-38&&a2.image<1e-38)
{
printf("a2 is 0!ERROR\n");
return quo;
}
quo.real=(a1.real*a2.real+a1.image*a2.image)/(a2.real*a2.real+a2.image*a2.image);
quo.image=(a2.real*a1.image-a1.real*a2.image)/(a2.real*a2.real+a2.image*a2.image);
return quo;
}//除法(a+bi)/(c+di)=(a+bi)*(c-di)/((c+di)*(c-di))=(a+bi)*(c-di)/(c*c+d*d)
float GetReal(Complex a)
{
return a.real;
}
float GetImage(Complex b)
{
return b.image;
}
void Print(Complex c)
{
if(GetReal(c)==0.0)
printf("%.2f\n",GetImage(c));
else if(GetImage(c)==0.0)
printf("%.2f\n",GetReal(c));
else
printf("%.2f+%.2fi\n",GetReal(c),GetReal(c));
}
void main()
{
Complex a,b,sum,dif,pro,quo;
float m,n;
int i;
char s;
for(i=0;;i++)
{
printf("请输入您所要进行的四则运算(+,-,*,/):");
scanf("%c",&s);
printf("请以a+bi形式输入两个数:");
scanf("%f+%fi",&m,&n);
a=InitComplex(m,n);
printf("请以c+di形式输入两个数:");
scanf("%f+%fi",&m,&n);
b=InitComplex(m,n);
switch(s)
{
case '+': sum=Add(a,b);Print(sum);break;
case '-': dif=Sub(a,b);Print(dif);break;
case '*': pro=Mul(a,b);Print(pro);break;
case '/': quo=Div(a,b);Print(quo);break;
default:printf("有误,请重新输入!");
}
}
}
花了j时间写这个,新手上路,真不容易 。。还好有一些参照。嘿嘿
- 数据结构之 复数的四则运算
- 数据结构之复数的四则运算
- 数据结构实验之实现两个复数的四则运算
- <数据结构>复数四则运算
- 复数的四则运算
- 复数的四则运算
- 复数类的四则运算
- 复数的四则运算
- 给出复数,实现复数的四则运算
- 复数四则运算
- 2016蓝桥杯假期任务之《复数四则运算》
- 一个计算复数四则运算的小程序
- java中复数四则运算的小程序
- 复数的四则运算(模板类)
- 使用模板类实现复数的四则运算
- C++学习日记之运用运算符重载计算复数的四则运算
- 数据结构之简单四则运算表达式求值8-(栈的实现)
- java求复数四则运算
- AS3 Embed资源错误Unable to transcode asset处理
- 不可不知道的SEO与SEM术语大全
- C/C++变量在内存中的分布
- sicily 1156.先序遍历二叉树
- CodeForces 275C k-Multiple Free Set(二分)
- 数据结构之复数的四则运算
- 内部匿名类和匿名类
- #pragma data_seg()
- cocos2d-x TestLua 之 CCMenuItemLabel CCMenuItemSprite CCMenuItemFont 菜单类
- Lightoj 1021 数位DP
- C语言二叉搜索树基本操作
- ios后台运行
- sicily 1035.DNA Matching
- 利用Powershell 实现文件名的批量修改!