哪位大神可以帮帮我,这个复数四则运算在构造复数时虚数不能为负数,否则就一直刷屏,求解决,拜托了( •̥́ ˍ •̀ू )

我々★ぬ行 2019-05-07 06:38:30
#include <stdlib.h> #include <stdio.h> typedef struct Complex{ float real; float image; }Complex; Complex CreatCom(float real,float image) { Complex NewCom; NewCom.real=real; NewCom.image=image; return NewCom; } Complex jia(Complex c1,Complex c2) { Complex AddComplex; AddComplex.real=c1.real+c2.real; AddComplex.image=c1.image+c2.image; return AddComplex; } Complex jian(Complex c1,Complex c2) { Complex SubComplex; SubComplex.real=c1.real-c2.real; SubComplex.image=c1.image-c2.image; return SubComplex; } Complex cheng(Complex c1,Complex c2) { Complex MulComplex; MulComplex.real=(c1.real*c2.real)-(c1.image*c2.image); MulComplex.image=(c1.real*c2.image)+(c1.image*c2.real); return MulComplex; } Complex chu(Complex c1,Complex c2) { Complex DivComplex; DivComplex.real=((c1.real*c2.real)+(c1.image*c2.image))/(c2.real*c2.real+c2.image*c2.image); DivComplex.image=((c1.image*c2.real)-(c1.real*c2.image))/(c2.real*c2.real+c2.image*c2.image); return DivComplex; } void PrintCom(Complex c1) { if(c1.image>0||c1.image==0) { if(c1.real!=0&&c1.image!=0) printf("%.2f+%.2fi\n",c1.real,c1.image); else if(c1.real==0&&c1.image!=0) printf("%.2fi\n",c1.image); else if(c1.real!=0&&c1.image==0) printf("%.2f\n",c1.real); else if(c1.real==0&&c1.image==0) printf("%.2f\n",c1.real); } else { if(c1.real!=0&&c1.image!=0) printf("%.2f-%.2fi\n",c1.real,-c1.image); else if(c1.real==0&&c1.image!=0) printf("-%.2fi\n",-c1.image); } } main() { Complex c1,c2,c3; float Real1=0,Image1=0,Real2=0,Image2=0; int choice,flag=0; printf("*************************复数运算**************************\n"); printf("\t\t\t1.复数构造\n\t\t\t2.复数相加\n\t\t\t3.复数相减\n"); printf("\t\t\t4.复数相乘\n\t\t\t5.复数相除\n\t\t\t6.提取实部\n"); printf("\t\t\t7.提取虚部\n\t\t\t0.退出\n\t\t\t\n"); printf("***********************************************************\n"); while(1){ printf("\n输入你的操作序号:"); scanf("%d",&choice); switch(choice) { case 1: printf("输入第一个复数的实部和虚部:"); scanf("%f,%f",&Real1,&Image1); c1=CreatCom(Real1,Image1); printf("1vvvvvvvvvvvvv"); getchar(); PrintCom(c1); printf("wrwermwejhwjf"); printf("输入第二个复数的实部和虚部:"); scanf("%f,%f",&Real2,&Image2); c2=CreatCom(Real2,Image2); PrintCom(c2); flag=1; break; case 2: if(flag==1){ c3=jia(c1,c2); printf("两数之和是:"); PrintCom(c3);} else printf("您还未构造复数!\n"); break; case 3: if(flag==1){ c3=jian(c1,c2); printf("两数之差是:"); PrintCom(c3);} else printf("您还未构造复数!\n"); break; case 4: if(flag==1){ c3=cheng(c1,c2); printf("两数之积是:"); PrintCom(c3);} else printf("您还未构造复数!\n"); break; case 5: if(flag==1){ c3=chu(c1,c2); printf("两数之商是:"); PrintCom(c3);} else printf("您还未构造复数!\n"); break; case 6: if(flag==1){ printf("第一个复数实部为:%.2f\n",c1.real); printf("第二个复数实部为:%.2f\n",c2.real);} else printf("您还未构造复数!\n"); break; case 7: if(flag==1){ printf("第一个复数虚部为:%.2fi\n",c1.image); printf("第二个复数虚部为:%.2fi\n",c2.image);} else printf("您还未构造复数!\n"); break; case 0: break; default: printf("非法操作!\n"); break; } if(choice==0) break; } }
...全文
38 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧