前言:
此时看官们对“c语言实现复数加减法”大致比较注意,朋友们都需要知道一些“c语言实现复数加减法”的相关内容。那么小编在网摘上搜集了一些关于“c语言实现复数加减法””的相关文章,希望同学们能喜欢,看官们快快来学习一下吧!我们都知道数的四则运算,那复数的四则运算不知道大家是否了解。
在此之前,先来讲一讲复数的概念,复数,就是形如c=a+bi的数,a是实部,b是虚部,i就是虚数单位,当a=0时,c就是纯虚数,当b=0时,c就是纯实数。
今天这道题目的要求就是编写程序计算两个复数的和、差、积、商,并按照指定要求输入和打印输出。
梳理逻辑
1、这道题目的逻辑很简单,先是按照一定的格式给出两个复数C1和C2的实部和虚部。
那就定义四个变量a1、b1、a2、b2,分别代表复数C1和C2的实部和虚部,用到一个scanf函数来输入。
2、之后就需要进行分情况讨论了,注意,打印输出的结果要精确到小数点后1位,所以这实部和虚部定义的变量类型为float,并且在输入时,要用到“%f”,打印输出时,要用到“%.1f”。
3、如何分情况呢,因为要保留到小数点后1位,所以不是以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语言怎么算商 #复数除法c语言怎么写 #c语言中的四则运算怎么写