1051. 复数乘法 (15)



复数可以写成(A + Bi)的常规形式,其中A是实部,B是虚部,i是虚数单位,满足i2 = -1;也可以写成极坐标下的指数形式(R*e(Pi)),其中R是复数模,P是辐角,i是虚数单位,其等价于三角形式(R(cos(P) + isin(P))。

现给定两个复数的R和P,要求输出两数乘积的常规形式。

输入格式:

输入在一行中依次给出两个复数的R1, P1, R2, P2,数字间以空格分隔。

输出格式:

在一行中按照“A+Bi”的格式输出两数乘积的常规形式,实部和虚部均保留2位小数。注意:如果B是负数,则应该写成“A-|B|i”的形式。
输入样例:

2.3 3.5 5.2 0.4

输出样例:

-8.68-8.23i



错误代码:

/*************************************************************************> File Name: 1051.c> Author: YueBo > Function:复数乘法> Created Time: 2016年11月23日 星期三 22时16分44秒************************************************************************/#include <stdio.h>
#include <math.h>float myRound(float x)
{float val = 0.0;if (x >= 0) {val = x * 1000 + 5;} else {val = x * 1000 - 5;}val = (int)(val / 10);val = val / 100.0;return val;
}int main()
{float R1, P1, R2, P2, R3, P3;float temp1 = 0.0, temp2 = 0.0;scanf("%f%f%f%f", &R1, &P1, &R2, &P2);R3 = R1 * R2;P3 = P1 + P2;temp1 = myRound(R3*sin(P3));temp2 = myRound(R3*cos(P3));if (temp1 >= 0) {printf("%.2f+%.2fi", temp2, temp1);} else {printf("%.2f%.2fi", temp2, temp1);}return 0;
}

错误提示:

错误原因:

总有一个测试数据过不去,感觉怪异的不得了,怎么检查都查不出错误,后来查看别人的代码发现是自己数据类型用错啦,由于float的精度在中间结果中可能会出错,譬如说0.000000003 × 10000000 == 0,这样的错误,因为float是8位有效数字,double是16位有效数字,很明显把上面所有的float改成double就OK啦☺,由此发现,对于科学计算,一定要用double及精度在之之上的数据类型。

正确代码

#include <stdio.h>
#include <math.h>double myRound(double x)
{double val = 0.0;if (x >= 0) {val = x * 1000 + 5;} else {val = x * 1000 - 5;}val = (int)(val / 10);val = val / 100.0;return val;
}int main()
{double R1, P1, R2, P2, R3, P3;double temp1 = 0.0, temp2 = 0.0;scanf("%lf%lf%lf%lf", &R1, &P1, &R2, &P2);R3 = R1 * R2;P3 = P1 + P2;temp1 = myRound(R3*sin(P3));temp2 = myRound(R3*cos(P3));if (temp1 >= 0) {printf("%.2f+%.2fi", temp2, temp1);} else {printf("%.2f%.2fi", temp2, temp1);}return 0;
}

之所以自己写一个四舍五入的函数而不用printf自动进行四舍五入是因为,printf("%.2f", -0.0002);结果为-0.00,其实这样做还是麻烦啦,稍微对printf函数进行限制一下就OK啦,

代码如下:

/*************************************************************************> File Name: 1051.c> Author: YueBo > Function:复数乘法> Created Time: 2016年11月23日 星期三 22时16分44秒************************************************************************/#include <stdio.h>
#include <math.h>int main()
{double R1, P1, R2, P2, Re, Im;scanf("%lf%lf%lf%lf", &R1, &P1, &R2, &P2);Re = R1 * R2 * cos(P1+P2);Im = R1 * R2 * sin(P1+P2);if (-0.005<Re && Re<0) {printf("0.00");} else {printf("%.2f", Re);}if (-0.005<Im && Im<0) {printf("+0.00i");} else if (Im >= 0) {printf("+%.2fi", Im);} else {printf("%.2fi", Im);}return 0;
}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/421267.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ios企业应用发布流程

转载自:http://blog.csdn.net/justinjing0612/article/details/8758692留作备忘 企业发布app的 过程比app store 发布的简单多了&#xff0c;没那么多的要求&#xff0c;哈 但是整个工程的要求还是一样&#xff0c;比如各种像素的icon啊 命名规范啊等等。 下面是具体的流程 1、…

Mdi和修改的基本逻辑

一个主窗体要有基本的菜单栏,工具栏,状态条,系统栏,右键菜单,鼠标提示… 1,主界面:MDI,IsMdiContianer true,所有窗口的入口,媒介.一个项目只可有一个父容器 Form1 f new Form(); f.MdiParent this;//在父容器显示 ShowDialog();//模态窗口,写在模态窗口之后 的代码 必须等待…

1059. C语言竞赛(20)

C语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛。既然竞赛主旨是为了好玩&#xff0c;颁奖规则也就制定得很滑稽&#xff1a;0. 冠军将赢得一份“神秘大奖”&#xff08;比如很巨大的一本学生研究论文集……&#xff09;。1. 排名为素数的学生将赢得最好的奖品 —— 小黄人…

【Android Developers Training】 58. 缓存位图

注&#xff1a;本文翻译自Google官方的Android Developers Training文档&#xff0c;译者技术一般&#xff0c;由于喜爱安卓而产生了翻译的念头&#xff0c;纯属个人兴趣爱好。 原文链接&#xff1a;http://developer.android.com/training/displaying-bitmaps/cache-bitmap.ht…

树控件,多条件组合查询与混合数据源

//实现多条件查询 //...连接数据库的代码 SqlDataAdapter sda new SqlDataAdapter(sql,con); DataTable dt new DataTable(); sda.Fill(dt); CBO_CLS.DisPlayMember " "; CBO_CLS.ValueMember " "; //dt是内存中的数据表,对其进行表的操作 DataRow r …

前端学习(975):bootstrap轮播图

1引入js和css 2引入html 2运行结果

centos中文目录换成英文目录

http://http://xugang-1017-126-com.iteye.com/blog/2081845 如果安装了中文版的Cent OS之后&#xff0c;root目录和home目录下会出现中文的路径名&#xff0c;如“桌面”、“文档”、“图片”、“公共的”、“下载”、“音乐”、“视频”等目录&#xff0c;这样在命令行上操作…

linux3.0.4编译LDD中的scull全过程

按照惯例&#xff0c;我是应该先写一些本章的收获的&#xff0c;不过太晚了。 在看完第三章之后开始编译&#xff0c;错误一堆&#xff0c;几乎崩溃&#xff0c;幸亏经过不断的百度&#xff0c;总算解决了问题&#xff0c;我发现 我遇到问题比较多&#xff0c;算是集中七个龙珠…

用ado.net生成对应的sql语句

在不知道是增是删还是改还是查的情况下&#xff0c;用ado.net生成对应的sql语句。 对一张表批量操作。但前提条件是&#xff0c;对应一张表&#xff0c;主键&#xff0c;表的约束。//1.连接数据库SqlConnection con new SqlConnection(地址);//2.适配器(select语句,不是查数据…

前端学习(976):阿里百秀轮播图制作

引入js和css 复制html结构 结构调整

centos7解决火狐浏览器fash安装问题

su yum install flash-plugin 接下来一直yes就行啦

SAP RFC user 最小权限

今天作了几个rfc供外围系统调用&#xff0c;他们使用.net。 在.net调用时&#xff0c;提示“Lookup of function ET_PRDATA metadata failed for destination ZNMMPT_EXPORT_PR”。 这个错误&#xff0c;是由于GetFunctionMetadata()函数引起的&#xff0c;对此&#xff0c;NC0…

利用ado.net和winform连接ms Server可以做什么?

可以做简单的管理系统&#xff0c;如对班级&#xff0c;学生信息&#xff0c;超市&#xff0c;等等… 只是简单的&#xff01;并未涉及到数据的优化&#xff0c;处理。 进行界面与数据库的基本交互。 根据学习的小案例&#xff0c;做如下总结 1&#xff0c;有需求的建库建表建…

centOS7挂在windows移动硬盘方法

1&#xff0c;http://www.tuxera.com/community/open-source-ntfs-3g/ 下载ntfs-3g_ntfsprogs-2016.2.22这个压缩包&#xff0c;可用wget和浏览器两种方式都可以&#xff0c;前者更快&#xff1b; 2&#xff0c;解压&#xff0c;tar -xvf ***; 3&#xff0c;进入到解压目录**…

2020-11-16

4-4 区间偶数和 时间限制&#xff1a;1S 问题描述 输入n个不超过10000的正整数&#xff0c;找到这n个数中的最小数x和最大数y&#xff0c;计算闭区间[x,y]之间所有偶数的和s&#xff0c;输出x&#xff0c;y以及s。 输入说明 第一行输入n&#xff0c;表示有n个整数,0<n<…

增强中获取屏幕值的一句很实用代码…

增强中获取屏幕值的一句很实用代码&#xff0c;直接获取屏幕字段值&#xff0c; 一般是在增强中用比如MIGO收货时&#xff0c;希望获取收货对应的A01这个值增强&#xff1a;BADI&#xff1a; MB_DOCUMENT_BADI MB_DOCUMENT_BADI 是在过账后了&#xff0c;不能报E类型消息&…

picturebox与imagelist使用选择图片

Point1&#xff1a;picturebox 图片框点击时&#xff0c;弹出一个模态窗口&#xff0c;选完图片后关闭&#xff0c;然后窗口 有listview 大图标&#xff0c;imagelist&#xff0c;imagelist绑定listview。 1&#xff0c;窗体加载时显示所有图片。先在imagelist添加大小相似的图…