7-36 複數四則運算 (15 分)

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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章