龙空技术网

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

小萌九尾 136

前言:

此时看官们对“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语言中的四则运算怎么写