7-36 复数四则运算 (15 分)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_44720323/article/details/101390075

7-36 复数四则运算 (15 分)


本题我认为主要是麻烦在了各种的判断if,else if等的判断,但是只要写一个函数把他都封装起来,就简单了很多。
在做这道题是在c语言的课上,没有集中注意力,静下心来导致很烦躁,让他的判断给搞烦了,但是晚上回宿舍再看题目时,思路就清晰了许多,也就做出来了。
这提示我们编程时要选择相对安静的环境,或者自己能够静下心来。

#include <stdio.h>
#include <stdlib.h>
//打印相同的部分
void Print_same(double a1,double b1,double a2,double b2,char c);
//打印最后的结果
void Print_result(double res1,double res2);
//对结果进行四舍五入操作
double rounding(double num); 

int main()
{
	double a1,b1,a2,b2;
//	a1 = 2;b1 = 3.08;a2 = -2.04;b2 = 5.06;
	scanf("%lf%lf%lf%lf",&a1,&b1,&a2,&b2);
	//加法 
	Print_same(a1,b1,a2,b2,'+');
	Print_result(rounding(a1+a2),rounding(b1+b2));
	//减法 
	Print_same(a1,b1,a2,b2,'-');
	Print_result(rounding(a1-a2),rounding(b1-b2));
	//乘法 
	Print_same(a1,b1,a2,b2,'*');
	Print_result(rounding(a1*a2-b1*b2),rounding(a1*b2+a2*b1));
	//除法 
	Print_same(a1,b1,a2,b2,'/');
	Print_result(rounding((a1*a2+b1*b2)/(a2*a2+b2*b2)),rounding((-a1*b2+a2*b1)/(a2*a2+b2*b2)));
	return 0;
} 

//打印相同的部分 
void Print_same(double a1,double b1,double a2,double b2,char c){
	if(b1 < 0 && b2 < 0) printf("(%.1lf%.1lfi) %c (%.1lf%.1lfi) = ",a1,b1,c,a2,b2);
	else if(b1<0) printf("(%.1lf%.1lfi) %c (%.1lf+%.1lfi) = ",a1,b1,c,a2,b2);
	else if(b2<0) printf("(%.1lf+%.1lfi) %c (%.1lf%.1lfi) = ",a1,b1,c,a2,b2);
	else printf("(%.1lf+%.1lfi) %c (%.1lf+%.1lfi) = ",a1,b1,c,a2,b2);
}
//打印结果 
void Print_result(double res1,double res2){
	if(res1 == 0 && res2 == 0) printf("0.0\n");
	else if(res1 == 0) printf("%.1lfi\n",res2);
	else if(res2 == 0) printf("%.1lf\n",res1);
	else if(res2 < 0) printf("%.1lf%.1lfi\n",res1,res2);
	else printf("%.1lf+%.1lfi\n",res1,res2);
} 
//四舍五入 
double rounding(double num)
{
	if(num>0) num = (int)(num*10+0.5)/10.0;
	else num = (int)(num*10-0.5)/10.0;
	return num;
}

猜你喜欢

转载自blog.csdn.net/weixin_44720323/article/details/101390075
今日推荐