日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

#笔记:pta题笔记:注意:double不能直接比较大小!!!///////计算2个复数的和、差、积、商。

發布時間:2025/3/13 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 #笔记:pta题笔记:注意:double不能直接比较大小!!!///////计算2个复数的和、差、积、商。 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本題要求編寫程序,計算2個復數的和、差、積、商。

輸入格式:

輸入在一行中按照a1 b1 a2 b2的格式給出2個復數C1=a1+b1i和C2=a2+b2i的實部和虛部。題目保證C2不為0。

輸出格式:

分別在4行中按照(a1+b1i) 運算符 (a2+b2i) = 結果的格式順序輸出2個復數的和、差、積、商,數字精確到小數點后1位。如果結果的實部或者虛部為0,則不輸出。如果結果為0,則輸出0.0。

輸入樣例1:

2 3.08 -2.04 5.06

輸出樣例1:

(2.0+3.1i) + (-2.0+5.1i) = 8.1i (2.0+3.1i) - (-2.0+5.1i) = 4.0-2.0i (2.0+3.1i) * (-2.0+5.1i) = -19.7+3.8i (2.0+3.1i) / (-2.0+5.1i) = 0.4-0.6i

輸入樣例2:

1 1 -1 -1.01

輸出樣例2:

(1.0+1.0i) + (-1.0-1.0i) = 0.0 (1.0+1.0i) - (-1.0-1.0i) = 2.0+2.0i (1.0+1.0i) * (-1.0-1.0i) = -2.0i (1.0+1.0i) / (-1.0-1.0i) = -1.0 ``` `` #include<stdio.h> #include<stdlib.h> #include<string.h> //虛數結構體 struct imaginaryNum {double a;double b; }; typedef struct imaginaryNum cnum; cnum* addition(cnum* c1,cnum* c2);//虛數加法 cnum* subtraction(cnum* c1,cnum* c2);//虛數減法 cnum* multiplication(cnum* c1,cnum* c2);//虛數乘法 cnum* division(cnum* c1,cnum* c2);//虛數除法 */ //(2.0+3.1i) + (-2.0+5.1i) = 8.1i int main(void) {int ii=0;cnum c1,c2;memset(&c1,0,sizeof(c1));memset(&c2,0,sizeof(c2));cnum* c3=NULL;scanf("%lf %lf %lf %lf",&c1.a,&c1.b,&c2.a,&c2.b);//輸入虛數for(ii=0;ii<4;ii++){ //打印 算式printf("(%.1lf",c1.a);if(c1.b<0)printf("");else printf("+");printf("%.1lfi)",c1.b);//給出 運算符號,順便利用 已有的函數 運算switch(ii){case 0:{printf(" + ");c3=addition(&c1,&c2);};break;case 1:{printf(" - ");c3=subtraction(&c1,&c2);};break;case 2:{printf(" * ");c3=multiplication(&c1,&c2);};break;case 3:{printf(" / ");c3=division(&c1,&c2);};break;}printf("(%.1lf",c2.a);if(c2.b<0)printf("");else printf("+");printf("%.1lfi)",c2.b);printf(" = ");if(c3->a>(0-0.1)&&c3->a<(0+0.1)&&c3->b>(0-0.1)&&c3->b<(0+0.1))printf("0.0");else if(!(c3->a>(0-0.1)&&c3->a<(0+0.1)||c3->b>(0-0.1)&&c3->b<(0+0.1))){printf("%.1lf",c3->a);if(c3->b<0)printf("");else printf("+");printf("%.1lfi",c3->b);}else {if(!(c3->a>(0-0.1)&&c3->a<(0+0.1)))printf("%.1lf",c3->a);else printf("%.1lfi",c3->b);}printf("\n");}return 0; } //下面是構造的虛數運算函數 cnum* addition(cnum* c1,cnum* c2) {cnum* c3=(cnum*)malloc(sizeof(cnum));c3->a=c1->a+c2->a;c3->b=c1->b+c2->b;return c3; } cnum* subtraction(cnum* c1,cnum* c2) {cnum* c3=(cnum*)malloc(sizeof(cnum));c3->a=c1->a-c2->a;c3->b=c1->b-c2->b;return c3; } cnum* multiplication(cnum* c1,cnum* c2) {cnum* c3=(cnum*)malloc(sizeof(cnum));c3->a=c1->a*c2->a - c1->b*c2->b;c3->b=c1->a*c2->b + c1->b*c2->a;return c3; } cnum* division(cnum* c1,cnum* c2) {cnum* c3=(cnum*)malloc(sizeof(cnum));c3->a=c1->a*c2->a + c1->b*c2->b;c3->b=-c1->a*c2->b + c1->b*c2->a;c3->a=c3->a/(c2->a*c2->a+c2->b*c2->b);c3->b=c3->b/(c2->a*c2->a+c2->b*c2->b);return c3; }

特別注意,題目要求中

如果結果的實部或者虛部為0,則不輸出。如果結果為0,則輸出0.0。

這個步驟涉及到浮點數的比較大小的問題,我最開始是直接用==0來處理,但是提交上去一直顯示錯誤,后來想起來浮點數不能直接比較大小,就讓 c3->a在 -0.01 到 +0.01的范圍內就認為是0 了(因為 結果精度為0.1),但是還不對,最后調整到(+0.1~0.1)認為是0,終于提交正確

這個題給我的教訓是,再次強調了 “浮點數不能直接比較大小這個知識點

總結

以上是生活随笔為你收集整理的#笔记:pta题笔记:注意:double不能直接比较大小!!!///////计算2个复数的和、差、积、商。的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。