复数乘法(复数乘法器)

我们都知道数字的四则运算,但不知道你是否知道复数的四则运算。在此之前,先说一下复数的概念。复数是c=a+bi形式的数,其中A是实部,B是虚部,I是虚部。当a=0

我们都知道数字的四则运算,但不知道你是否知道复数的四则运算。

在此之前,先说一下复数的概念。复数是c=a+bi形式的数,其中A是实部,B是虚部,I是虚部。当a=0时,C是纯虚数,当b=0时,C是纯实数。

今天题目的要求是写一个程序,计算两个复数的和、差、积、商,并按照规定的要求输入打印。

用C语言实现“复数四则运算”,基础编程由此开始(第三十三节)

组合逻辑

1.这个题目的逻辑很简单。首先,按照一定的格式给出两个复数C1和C2的实部和虚部。

然后定义四个变量a1,b1,a2,b2,分别代表复数C1和C2的实部和虚部,用一个scanf函数输入。

2.之后就要视情况讨论了。注意打印输出结果要精确到小数点后一位,所以实部和虚部定义的变量类型是float,输入时要用“%f”,打印时用“%.1f”。

3.怎么分情况?因为要保留到小数点后一位,所以分界点不是0,而是0.05和-0.05,因为在大于-0.05小于0.05的范围内,四舍五入的结果是0。

主要分为以下几种情况:

1)当实部等于0,虚部不等于0时,只保留虚部,不保留实部。

2)虚部等于0,实部不等于0时,只保留实部,不保留虚部。

3)当实部和虚部都等于0时,结果为0。

4)当实部和虚部都不等于0时,所得结果保留实部和虚部。

5)虚部小于0时,要用减号代替加号。

4.假设给定复数C1=a1+b1i,C2=a2+b2i,两个复数相乘的结果应该是:

实部乘以a1*a2-b1*b2,虚部乘以b1*a2+a1*b2。

5.将两个复数相除得到的结果应该是:

实部除以(a1*a2+b1*b2)/(a2*a2+b2*b2),虚部除以(b1*a2-a1*b2)/(a2*a2+b2*b2)。

当我们知道了这些不同的情况,就可以把问题做完了。

代码实现

#include<stdio.h>int main(){ float a1;//复数C1的实部 float b1;//复数C1的虚部 float a2;//复数C2的实部 float b2;//复数C2的虚部 float suma;//实部加法 float suba;//实部减法 float mula;//实部乘法 float diva;//实部除法 float sumb;//虚部加法 float subb;//虚部减法 float mulb;//虚部乘法 float divb;//虚部除法 scanf("%f %f %f %f", &a1,&b1,&a2,&b2); suma = a1+a2;//实部相乘 suba = a1-a2;//实部相减 mula = a1*a2-b1*b2;//实部相乘 diva = (a1*a2+b1*b2)/(a2*a2+b2*b2);//实部相除 sumb = b1+b2;//虚部相加 subb = b1-b2;//虚部相减 mulb = b1*a2+a1*b2;//虚部相乘 divb = (b1*a2-a1*b2)/(a2*a2+b2*b2);//虚部相加 //加法 if(suma>-0.05&&suma<0.05&&sumb>0.05||sumb<-0.05){ if(b1<0&&b2>0){ printf("(%.1f%.1fi) + (%.1f+%.1fi) = %.1fi\n",a1,b1,a2,b2,sumb); } else if(b1<0&&b2<0){ printf("(%.1f%.1fi) + (%.1f%.1fi) = %.1fi\n",a1,b1,a2,b2,sumb); } else if(b1>0&&b2<0){ printf("(%.1f+%.1fi) + (%.1f%.1fi) = %.1fi\n",a1,b1,a2,b2,sumb); } else{ printf("(%.1f+%.1fi) + (%.1f+%.1fi) = %.1fi\n",a1,b1,a2,b2,sumb); } } else if(suma>0.05||suma<-0.05&&sumb<0.05&&sumb>-0.05){ if(b1<0&&b2>0){ printf("(%.1f%.1fi) + (%.1f+%.1fi) = %.1f\n",a1,b1,a2,b2,suma); } else if(b1<0&&b2<0){ printf("(%.1f%.1fi) + (%.1f%.1fi) = %.1f\n",a1,b1,a2,b2,suma); } else if(b1>0&&b2<0){ printf("(%.1f+%.1fi) + (%.1f%.1fi) = %.1f\n",a1,b1,a2,b2,suma); } else{ printf("(%.1f+%.1fi) + (%.1f+%.1fi) = %.1f\n",a1,b1,a2,b2,suma); } } else if(suma>-0.05&&suma<0.05&&sumb<0.05&&sumb>-0.05){ if(b1<0&&b2>0){ printf("(%.1f%.1fi) + (%.1f+%.1fi) = %.1f\n",a1,b1,a2,b2,suma); } else if(b1<0&&b2<0){ printf("(%.1f%.1fi) + (%.1f%.1fi) = %.1f\n",a1,b1,a2,b2,suma); } else if(b1>0&&b2<0){ printf("(%.1f+%.1fi) + (%.1f%.1fi) = %.1f\n",a1,b1,a2,b2,suma); } else{ printf("(%.1f+%.1fi) + (%.1f+%.1fi) = %.1f\n",a1,b1,a2,b2,suma); } } else if(sumb<0){ if(b1<0&&b2>0){ printf("(%.1f%.1fi) + (%.1f+%.1fi) = %.1f%.1fi\n",a1,b1,a2,b2,suma,sumb); } else if(b1<0&&b2<0){ printf("(%.1f%.1fi) + (%.1f%.1fi) = %.1f%.1fi\n",a1,b1,a2,b2,suma,sumb); } else if(b1>0&&b2<0){ printf("(%.1f+%.1fi) + (%.1f%.1fi) = %.1f%.1fi\n",a1,b1,a2,b2,suma,sumb); } else{ printf("(%.1f+%.1fi) + (%.1f+%.1fi) = %.1f%.1fi\n",a1,b1,a2,b2,suma,sumb); } } else{ if(b1<0&&b2>0){ printf("(%.1f%.1fi) + (%.1f+%.1fi) = %.1f+%.1fi\n",a1,b1,a2,b2,suma,sumb); } else if(b1<0&&b2<0){ printf("(%.1f%.1fi) + (%.1f%.1fi) = %.1f+%.1fi\n",a1,b1,a2,b2,suma,sumb); } else if(b1>0&&b2<0){ printf("(%.1f+%.1fi) + (%.1f%.1fi) = %.1f+%.1fi\n",a1,b1,a2,b2,suma,sumb); } else{ printf("(%.1f+%.1fi) + (%.1f+%.1fi) = %.1f+%.1fi\n",a1,b1,a2,b2,suma,sumb); } }//减法 if(suba>-0.05&&suba<0.05&&(subb>0.05||subb<-0.05)){ if(b1<0&&b2>0){ printf("(%.1f%.1fi) - (%.1f+%.1fi) = %.1fi\n",a1,b1,a2,b2,subb); } else if(b1<0&&b2<0){ printf("(%.1f%.1fi) - (%.1f%.1fi) = %.1fi\n",a1,b1,a2,b2,subb); } else if(b1>0&&b2<0){ printf("(%.1f+%.1fi) - (%.1f%.1fi) = %.1fi\n",a1,b1,a2,b2,subb); } else{ printf("(%.1f+%.1fi) - (%.1f+%.1fi) = %.1fi\n",a1,b1,a2,b2,subb); } } else if(suba!=0&&subb<0.05&&subb>-0.05){ if(b1<0&&b2>0){ printf("(%.1f%.1fi) - (%.1f+%.1fi) = %.1f\n",a1,b1,a2,b2,suba); } else if(b1<0&&b2<0){ printf("(%.1f%.1fi) - (%.1f%.1fi) = %.1f\n",a1,b1,a2,b2,suba); } else if(b1>0&&b2<0){ printf("(%.1f+%.1fi) - (%.1f%.1fi) = %.1f\n",a1,b1,a2,b2,suba); } else{ printf("(%.1f+%.1fi) - (%.1f+%.1fi) = %.1f\n",a1,b1,a2,b2,suba); } } else if(suba>-0.05&&suba<0.05&&subb<0.05&&subb>-0.05){ if(b1<0&&b2>0){ printf("(%.1f%.1fi) - (%.1f+%.1fi) = %.1f\n",a1,b1,a2,b2,suba); } else if(b1<0&&b2<0){ printf("(%.1f%.1fi) - (%.1f%.1fi) = %.1f\n",a1,b1,a2,b2,suba); } else if(b1>0&&b2<0){ printf("(%.1f+%.1fi) - (%.1f%.1fi) = %.1f\n",a1,b1,a2,b2,suba); } else{ printf("(%.1f+%.1fi) - (%.1f+%.1fi) = %.1f\n",a1,b1,a2,b2,suba); } } else if(subb<0){ if(b1<0&&b2>0){ printf("(%.1f%.1fi) - (%.1f+%.1fi) = %.1f%.1fi\n",a1,b1,a2,b2,suba,subb); } else if(b1<0&&b2<0){ printf("(%.1f%.1fi) - (%.1f%.1fi) = %.1f%.1fi\n",a1,b1,a2,b2,suba,subb); } else if(b1>0&&b2<0){ printf("(%.1f+%.1fi) - (%.1f%.1fi) = %.1f%.1fi\n",a1,b1,a2,b2,suba,subb); } else{ printf("(%.1f+%.1fi) - (%.1f+%.1fi) = %.1f%.1fi\n",a1,b1,a2,b2,suba,subb); } } else if(suba>0.05||suba<-0.05&&subb>0.05){ if(b1<0&&b2>0){ printf("(%.1f%.1fi) - (%.1f+%.1fi) = %.1f+%.1fi\n",a1,b1,a2,b2,suba,subb); } else if(b1<0&&b2<0){ printf("(%.1f%.1fi) - (%.1f%.1fi) = %.1f+%.1fi\n",a1,b1,a2,b2,suba,subb); } else if(b1>0&&b2<0){ printf("(%.1f+%.1fi) - (%.1f%.1fi) = %.1f+%.1fi\n",a1,b1,a2,b2,suba,subb); } else{ printf("(%.1f+%.1fi) - (%.1f+%.1fi) = %.1f+%.1fi\n",a1,b1,a2,b2,suba,subb); } } //乘法 if(mula>-0.05&&mula<0.05&mulb>0.05||mulb<-0.05){ if(b1<0&&b2>0){ printf("(%.1f%.1fi) * (%.1f+%.1fi) = %.1fi\n",a1,b1,a2,b2,mulb); } else if(b1<0&&b2<0){ printf("(%.1f%.1fi) * (%.1f%.1fi) = %.1fi\n",a1,b1,a2,b2,mulb); } else if(b1>0&&b2<0){ printf("(%.1f+%.1fi) * (%.1f%.1fi) = %.1fi\n",a1,b1,a2,b2,mulb); } else{ printf("(%.1f+%.1fi) * (%.1f+%.1fi) = %.1fi\n",a1,b1,a2,b2,mulb); } } else if(mula>0.05||mula<-0.05&&mulb<0.05&&mulb>-0.05){ if(b1<0&&b2>0){ printf("(%.1f%.1fi) * (%.1f+%.1fi) = %.1f\n",a1,b1,a2,b2,mula); } else if(b1<0&&b2<0){ printf("(%.1f%.1fi) * (%.1f%.1fi) = %.1f\n",a1,b1,a2,b2,mula); } else if(b1>0&&b2<0){ printf("(%.1f+%.1fi) * (%.1f%.1fi) = %.1f\n",a1,b1,a2,b2,mula); } else{ printf("(%.1f+%.1fi) * (%.1f+%.1fi) = %.1f\n",a1,b1,a2,b2,mula); } } else if(mula==0&&mulb==0){ if(b1<0&&b2>0){ printf("(%.1f%.1fi) * (%.1f+%.1fi) = %.1f\n",a1,b1,a2,b2,mula); } else if(b1<0&&b2<0){ printf("(%.1f%.1fi) * (%.1f%.1fi) = %.1f\n",a1,b1,a2,b2,mula); } else if(b1>0&&b2<0){ printf("(%.1f+%.1fi) * (%.1f%.1fi) = %.1f\n",a1,b1,a2,b2,mula); } else{ printf("(%.1f+%.1fi) * (%.1f+%.1fi) = %.1f\n",a1,b1,a2,b2,mula); } } else if(mulb<-0.05){ if(b1<0&&b2>0){ printf("(%.1f%.1fi) * (%.1f+%.1fi) = %.1f%.1fi\n",a1,b1,a2,b2,mula,mulb); } else if(b1<0&&b2<0){ printf("(%.1f%.1fi) * (%.1f%.1fi) = %.1f%.1fi\n",a1,b1,a2,b2,mula,mulb); } else if(b1>0&&b2<0){ printf("(%.1f+%.1fi) * (%.1f%.1fi) = %.1f%.1fi\n",a1,b1,a2,b2,mula,mulb); } else{ printf("(%.1f+%.1fi) * (%.1f+%.1fi) = %.1f%.1fi\n",a1,b1,a2,b2,mula,mulb); } } else if(mula>0.05||mula<-0.05&&mulb>0.05){ if(b1<0&&b2>0){ printf("(%.1f%.1fi) * (%.1f+%.1fi) = %.1f+%.1fi\n",a1,b1,a2,b2,mula,mulb); } else if(b1<0&&b2<0){ printf("(%.1f%.1fi) * (%.1f%.1fi) = %.1f+%.1fi\n",a1,b1,a2,b2,mula,mulb); } else if(b1>0&&b2<0){ printf("(%.1f+%.1fi) * (%.1f%.1fi) = %.1f+%.1fi\n",a1,b1,a2,b2,mula,mulb); } else{ printf("(%.1f+%.1fi) * (%.1f+%.1fi) = %.1f+%.1fi\n",a1,b1,a2,b2,mula,mulb); } } //除法 if(diva>-0.05&&diva<0.05&&(divb>0.05||divb<-0.05)){ if(b1<0&&b2>0){ printf("(%.1f%.1fi) / (%.1f+%.1fi) = %.1fi",a1,b1,a2,b2,divb); } else if(b1<0&&b2<0){ printf("(%.1f%.1fi) / (%.1f%.1fi) = %.1fi",a1,b1,a2,b2,divb); } else if(b1>0&&b2<0){ printf("(%.1f+%.1fi) / (%.1f%.1fi) = %.1fi",a1,b1,a2,b2,divb); } else{ printf("(%.1f+%.1fi) / (%.1f+%.1fi) = %.1fi",a1,b1,a2,b2,divb); } } else if((diva>0.05||diva<-0.05)&&divb<0.05&&divb>-0.05){ if(b1<0&&b2>0){ printf("(%.1f%.1fi) / (%.1f+%.1fi) = %.1f",a1,b1,a2,b2,diva); } else if(b1<0&&b2<0){ printf("(%.1f%.1fi) / (%.1f%.1fi) = %.1f",a1,b1,a2,b2,diva); } else if(b1>0&&b2<0){ printf("(%.1f+%.1fi) / (%.1f%.1fi) = %.1f",a1,b1,a2,b2,diva); } else{ printf("(%.1f+%.1fi) / (%.1f+%.1fi) = %.1f",a1,b1,a2,b2,diva); } } else if(diva>-0.05&&diva<0.05&&divb<0.05&&divb>-0.05){ if(b1<0&&b2>0){ printf("(%.1f%.1fi) / (%.1f+%.1fi) = %.1f",a1,b1,a2,b2,diva); } else if(b1<0&&b2<0){ printf("(%.1f%.1fi) / (%.1f%.1fi) = %.1f",a1,b1,a2,b2,diva); } else if(b1>0&&b2<0){ printf("(%.1f+%.1fi) / (%.1f%.1fi) = %.1f",a1,b1,a2,b2,diva); } else{ printf("(%.1f+%.1fi) / (%.1f+%.1fi) = %.1f",a1,b1,a2,b2,diva); } } else if(divb<0){ if(b1<0&&b2>0){ printf("(%.1f%.1fi) / (%.1f+%.1fi) = %.1f%.1fi",a1,b1,a2,b2,diva,divb); } else if(b1<0&&b2<0){ printf("(%.1f%.1fi) / (%.1f%.1fi) = %.1f%.1fi",a1,b1,a2,b2,diva,divb); } else if(b1>0&&b2<0){ printf("(%.1f+%.1fi) / (%.1f%.1fi) = %.1f%.1fi",a1,b1,a2,b2,diva,divb); } else{ printf("(%.1f+%.1fi) / (%.1f+%.1fi) = %.1f%.1fi",a1,b1,a2,b2,diva,divb); } } else if(diva>0.05||diva<-0.05&&divb>0.05){ if(b1<0&&b2>0){ printf("(%.1f%.1fi) / (%.1f+%.1fi) = %.1f+%.1fi",a1,b1,a2,b2,diva,divb); } else if(b1<0&&b2<0){ printf("(%.1f%.1fi) / (%.1f%.1fi) = %.1f+%.1fi",a1,b1,a2,b2,diva,divb); } else if(b1>0&&b2<0){ printf("(%.1f+%.1fi) / (%.1f%.1fi) = %.1f+%.1fi",a1,b1,a2,b2,diva,divb); } else{ printf("(%.1f+%.1fi) / (%.1f+%.1fi) = %.1f+%.1fi",a1,b1,a2,b2,diva,divb); } }}

结果测试

用C语言实现“复数四则运算”,基础编程由此开始(第三十三节)

用C语言实现“复数四则运算”,基础编程由此开始(第三十三节)

用C语言实现“复数四则运算”,基础编程由此开始(第三十三节)

摘要

这个题目我写了300多行代码,结果是正确的,但是代码太繁琐了。应该还有更简单的方法。我在这个题目上的实践可能还有很多问题。如果你有更好的方法,请在评论区留言。让我们一起学习,一起进步!

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

作者:美站资讯,如若转载,请注明出处:https://www.meizw.com/n/122649.html

发表回复

登录后才能评论