计算2个复数的和、差、积、商(解决)
来源:互联网 发布:java回文数算法 编辑:程序博客网 时间:2024/05/23 12:26
结构
第7题
本题要求编写程序,计算2个复数的和、差、积、商。
【输入】
输入在一行中按照“a1 b1 a2 b2”的格式给出2个复数C1=a1+b1*i和C2=a2+b2*i的实部和虚部。题目保证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<math.h>struct num{ double a; double b;}; int main(){ struct num c[10]; scanf("%lf%lf%lf%lf",&c[1].a,&c[1].b,&c[2].a,&c[2].b); c[3].a=c[1].a+c[2].a; c[3].b=c[1].b+c[2].b; c[4].a=c[1].a-c[2].a; c[4].b=c[1].b-c[2].b; c[5].a=c[1].a*c[2].a-c[1].b*c[2].b; c[5].b=c[1].a*c[2].b+c[1].b*c[2].a; c[6].a=((c[1].a)*(c[2].a)+(c[1].b)*(c[2].b))/((c[2].a)*(c[2].a)+c[2].b*c[2].b); c[6].b=(c[1].b*c[2].a-c[1].a*c[2].b)/(c[2].a*c[2].a+c[2].b*c[2].b); //输出时候还要考虑到保留一位小数后为0则也算0, //假如虚部为负,中间的+号不能加 //换行要输完换 //abs是整数绝对值,fabs才是浮点数绝对值! //注意,输出的算式中的+-都要判断过后面那个数的正负的,这也正是这道题目代码复杂并且重复率高的原因 //不知道有没有好的方法解决这个问题。 //注意,当输出的东西多了以后,相似度哪怕有0.95+也可能有很大的地方出错,毕竟基数大了 if(c[1].b>0&&c[2].b>0) printf("(%.1f+%.1fi) + (%.1f+%.1fi) = ",c[1].a,c[1].b,c[2].a,c[2].b); else if(c[1].b<0&&c[2].b>0) printf("(%.1f%.1fi) + (%.1f+%.1fi) = ",c[1].a,c[1].b,c[2].a,c[2].b); else if(c[1].b>0&&c[2].b<0) printf("(%.1f+%.1fi) + (%.1f%.1fi) = ",c[1].a,c[1].b,c[2].a,c[2].b); else if(c[1].b<0&&c[2].b<0) printf("(%.1f%.1fi) + (%.1f%.1fi) = ",c[1].a,c[1].b,c[2].a,c[2].b); if(fabs(c[3].a)<0.05&&fabs(c[3].b)<0.05) //注意可以用这种方式来判断四舍五入后是否为0. printf("0.0"); if(fabs(c[3].a)>=0.05) printf("%.1f",c[3].a); if(fabs(c[3].a)>=0.05&&c[3].b>0&&fabs(c[3].b)>=0.05) printf("+"); if(fabs(c[3].b)>=0.05) printf("%.1fi",c[3].b); printf("\n"); if(c[1].b>0&&c[2].b>0) printf("(%.1f+%.1fi) - (%.1f+%.1fi) = ",c[1].a,c[1].b,c[2].a,c[2].b); else if(c[1].b<0&&c[2].b>0) printf("(%.1f%.1fi) - (%.1f+%.1fi) = ",c[1].a,c[1].b,c[2].a,c[2].b); else if(c[1].b>0&&c[2].b<0) printf("(%.1f+%.1fi) - (%.1f%.1fi) = ",c[1].a,c[1].b,c[2].a,c[2].b); else printf("(%.1f%.1fi) - (%.1f%.1fi) = ",c[1].a,c[1].b,c[2].a,c[2].b); if(fabs(c[4].a)<0.05&&fabs(c[4].b)<0.05) printf("0.0"); if(fabs(c[4].a)>=0.05) printf("%.1f",c[4].a); if(fabs(c[4].a)>=0.05&&c[4].b>0&&fabs(c[4].b)>=0.05)//一开始忘了这里,因为要保证后者不约等于0且为正数 printf("+") ; if(fabs(c[4].b)>=0.05) printf("%.1fi",c[4].b); printf("\n"); if(c[1].b>0&&c[2].b>0) printf("(%.1f+%.1fi) * (%.1f+%.1fi) = ",c[1].a,c[1].b,c[2].a,c[2].b); else if(c[1].b<0&&c[2].b>0) printf("(%.1f%.1fi) * (%.1f+%.1fi) = ",c[1].a,c[1].b,c[2].a,c[2].b); else if(c[1].b>0&&c[2].b<0) printf("(%.1f+%.1fi) * (%.1f%.1fi) = ",c[1].a,c[1].b,c[2].a,c[2].b); else printf("(%.1f%.1fi) * (%.1f%.1fi) = ",c[1].a,c[1].b,c[2].a,c[2].b); if(fabs(c[5].a)<0.05&&fabs(c[5].b)<0.05) printf("0.0"); if(fabs(c[5].a)>=0.05) printf("%.1f",c[5].a); if(fabs(c[5].a)>=0.05&&c[5].b>0&&fabs(c[5].b)>=0.05) printf("+") ; if(fabs(c[5].b)>=0.05) printf("%.1fi",c[5].b); printf("\n"); if(c[1].b>0&&c[2].b>0) printf("(%.1f+%.1fi) / (%.1f+%.1fi) = ",c[1].a,c[1].b,c[2].a,c[2].b); else if(c[1].b<0&&c[2].b>0) printf("(%.1f%.1fi) / (%.1f+%.1fi) = ",c[1].a,c[1].b,c[2].a,c[2].b); else if(c[1].b>0&&c[2].b<0) printf("(%.1f+%.1fi) / (%.1f%.1fi) = ",c[1].a,c[1].b,c[2].a,c[2].b); else printf("(%.1f%.1fi) / (%.1f%.1fi) = ",c[1].a,c[1].b,c[2].a,c[2].b); if(fabs(c[6].a)<0.05&&fabs(c[6].b)<0.05) printf("0.0"); if(fabs(c[6].a)>=0.05) printf("%.1f",c[6].a); if(fabs(c[6].a)>=0.05&&c[6].b>0&&fabs(c[6].b)>=0.05) printf("+") ; if(fabs(c[6].b)>=0.05) printf("%.1fi",c[6].b); printf("\n"); return 0; }
0 0
- 计算2个复数的和、差、积、商(解决)
- 复数之间的和差计算
- 程序设计:两个复数和差计算
- 设计一个复数类Complex,并计算复数的和、差
- 两个复数的 和,差
- 计算2个日期的差
- 两个复数的和与差
- 计算两个复数之和、差
- 计算两个复数之和、差
- 计算两个复数之和、差.
- 计算2个时间之间的天数差 JS版 和 JAVA版 2种
- DateDiff的用法(计算二个日期的差)
- java 计算2个日期差的天数
- C# 计算两个复数之和、差
- 作业复数类compelx计算复数之和.差
- Sql 计算量个时间的差
- 设计复数类Complex,计算两个复数之和、差,同时以 a+bi 的字符串形式显示
- JAVA第十周实验封装一类Java对象,计算两个大整数(如123456789123456789123456789和987654321987654321987654321)的和、差、积和商,并计算一个大
- AS6 配置telnet和ftp
- Set接口之HashSet、TreeSet、EnumSet
- 如何在eclipse中设置@author为自己的名字
- Android Studio导入第三方类库的方法
- iOS 两种方式实现瀑布流效果剑客篇(欢迎提建议和分享经验)
- 计算2个复数的和、差、积、商(解决)
- DPM 检测源码分析
- Androidの游戏源码下载地址
- 刚接触到linux,对一些命令的学习,做个笔记
- STL学习小结
- 如何查看Xen、操作系统及内核版本信息
- 如何理解Netfilter中的连接跟踪机制
- [Elasticsearch] 多字段搜索 (五) - 以字段为中心的查询
- Linux文件的复制、删除和移动命令