复数计算题目( P1103)

编程实现两个复数的运算。设有两个复数 和 ,则他们的运算公式为:

要求:(1)定义一个结构体类型来描述复数。
  (2)复数之间的加法、减法、乘法和除法分别用不用的函数来实现。
  (3)必须使用结构体指针的方法把函数的计算结果返回。
  说明:用户输入:运算符号(+,-,*,/) a b c d.
  输出:a+bi,输出时不管a,b是小于0或等于0都按该格式输出,输出时a,b都保留两位。

输入:
  - 2.5 3.6 1.5 4.9
输出:
  1.00±1.30i

题目分析:

题目意思简单明了,掌握复数的基本运算、结构体指针。
(结构体指针也可以不使用,因为蓝桥杯系统评测只会输入数据,判断输出是否正确,并不关注实现过程。)
①复数的四则运算:(来源360百科)
加法法则:(a+bi)+(c+di)=(a+c)+(b+d)i;
减法法则:(a+bi)-(c+di)=(a-c)+(b-d)i;
乘法法则:(a+bi)·(c+di)=(ac-bd)+(bc+ad)i
除法法则:(a+bi)÷(c+di)=[(ac+bd)/(c²+d²)]+[(bc-ad)/(c²+d²)]i
理解复数除法法则:

②使用结构体指针的方法把函数的计算结果返回。
结构体指针:通俗一些说就是指向结构体的指针,类似于int类型指针。

struct node{int a;int b;
}*Node;//*Node为结构体指针
int *p;//p为int类型指针

最后编写加、减、乘、除四个函数,每个函数返回结构体指针。
以下为具体代码:

#include<bits/stdc++.h>
using namespace std;struct node
{double a, b;
}*Node;node* sub(double a1,double b1,double a2,double b2)
{double a, b;node *p;p = (node*)malloc(sizeof(node));a=a1-a2;b=b1-b2;p->a=a;p->b=b;return p;
}node* add(double a1,double b1,double a2,double b2)
{double a, b;node *p;p = (node*)malloc(sizeof(node));a=a1+a2;b=b1+b2;p->a=a;p->b=b;return p;
}node* div(double a1,double b1,double a2,double b2)
{double a, b;node *p;p = (node*)malloc(sizeof(node));a=(a1*a2+b1*b2)/(a2*a2+b2*b2);b=(b1*a2-a1*b2)/(a2*a2+b2*b2);p->a=a;p->b=b;return p;
}node* mul(double a1,double b1,double a2,double b2)
{double a, b;node *p;p = (node*)malloc(sizeof(node));a=a1*a2-b1*b2;b=a1*b2+a2*b1;p->a=a;p->b=b;return p;
}int main()
{char ch;double a1, b1, a2, b2;scanf("%c %lf %lf %lf %lf", &ch, &a1, &b1, &a2, &b2);if(ch=='-')Node=sub(a1, b1, a2, b2);else if(ch=='+')Node=add(a1, b1, a2, b2);else if(ch=='*')Node=mul(a1, b1, a2, b2);else if(ch=='/')Node=div(a1, b1, a2, b2);printf("%.2lf+%.2lfi", Node->a, Node->b);return 0;
}

不用结构体指针 代码如下:

#include<bits/stdc++.h>
using namespace std;void sub(double a1,double b1,double a2,double b2)
{double a, b;a=a1-a2;b=b1-b2;printf("%.2lf+%.2lfi", a, b);
}void add(double a1,double b1,double a2,double b2)
{double a, b;a=a1+a2;b=b1+b2;printf("%.2lf+%.2lfi", a, b);
}void div(double a1,double b1,double a2,double b2)
{double a, b;a=(a1*a2+b1*b2)/(a2*a2+b2*b2);b=(b1*a2-a1*b2)/(a2*a2+b2*b2);printf("%.2lf+%.2lfi", a, b);
}void mul(double a1,double b1,double a2,double b2)
{double a, b;a=a1*a2-b1*b2;b=a1*b2+a2*b1;printf("%.2lf+%.2lfi", a, b);
}int main()
{char ch;double a1, b1, a2, b2;scanf("%c %lf %lf %lf %lf", &ch, &a1, &b1, &a2, &b2);if(ch=='-')sub(a1, b1, a2, b2);else if(ch=='+')add(a1, b1, a2, b2);else if(ch=='*')mul(a1, b1, a2, b2);else if(ch=='/')div(a1, b1, a2, b2);return 0;
}

希望能够将自己的一些学习经验分享给有需要的人。
我是小郑,一个坚持不懈的小白。

基础算法题——复数计算(蓝桥杯算法训练 P1103)相关推荐

  1. java算法排列式_JAVA 蓝桥杯算法 全排列 背公式即可

    什么是全排列? 所谓全排列就是把几个字符或数字(以下称为元素),进行全部排列 例如:字符串 abc 那么就可以这样排abc acb bac bca cab cba 把全部元素能用到的排列方式进行全部排 ...

  2. 【蓝桥杯算法题】用java遍写税收计算

    [蓝桥杯算法题]用java遍写税收计算 题目:劳务报酬税收计算:输入 m ,输出税后收入.如果 m <=800,不扣税, 如果800< m <=4000.则 m 减去800后的金额扣 ...

  3. c语言oj题1923偶数之和,问题 1923: [蓝桥杯][算法提高VIP]学霸的迷宫 (BFS)

    题目描述 学霸抢走了大家的作业,班长为了帮同学们找回作业,决定去找学霸决斗.但学霸为了不要别人打扰,住在一个城堡里,城堡外面是一个二维的格子迷宫,要进城堡必须得先通过迷宫.因为班长还有妹子要陪,磨刀不 ...

  4. 【C/C++】蓝桥杯算法必刷题(三)目标ICPC铜/蓝桥杯国一

    目录 前言 题解文章汇总 题目传送门:算法必刷题(三) 该题单中第一类考点:二进制 1018.有趣的二进制 1019.[NOIP2006]数列 1020.只能吃土豆的牛牛 该题单中第二类考点:思维 1 ...

  5. 【C/C++】蓝桥杯算法必刷题(一)目标ICPC铜/蓝桥杯国一

    目录 前言 该题单中第一类考点:输入输出 1001.这是一道签到题 1005.乘法表 1006.KiKi学程序设计基础 1007.疫情死亡率 该题单中第二类考点:思维题 1002.排列式 1018.开 ...

  6. 【蓝桥杯算法题】获取桌面图标名称和坐标

    [蓝桥杯算法题]获取桌面图标名称和坐标 实现 解释 实现 可以使用Python的第三方库pyautogui来获取桌面图标的名称和坐标.下面是一个示例代码: import pyautogui# 获取屏幕 ...

  7. 蓝桥杯算法竞赛系列第一章——位运算的奇巧淫技及其实战

    遇见蓝桥遇见你,不负代码不负卿! 第二章"递归"已将更新咯,欢迎铁汁们点评!蓝桥杯算法竞赛系列第二章--深入理解重难点之递归(上)_安然无虞的博客-CSDN博客 目录 一.位运算符 ...

  8. 蓝桥杯 算法训练 Beaver's Calculator

    蓝桥杯 算法训练 Beaver's Calculator 问题描述 从万能词典来的聪明的海狸已经使我们惊讶了一次.他开发了一种新的计算器,他将此命名为"Beaver's Calculator ...

  9. 蓝桥杯算法竞赛系列第0章——蓝桥必考点及标准模板库STL(上)(万字博文,建议抱走)

    欢迎来到:遇见蓝桥遇见你,不负代码不负卿! 目录 ​ 一.蓝桥必考点剖析 二.什么是STL 三.vector的常见用法详解 1.vector的定义 2.vector容器内元素的访问 (1).通过下标访 ...

最新文章

  1. Servlet--05--HttpServletRequest; HttpServletResponse
  2. sprintboot-learn(一)
  3. 图说数据中心蒸发节能技术
  4. 题解-bzoj4221 JOI2012kangaroo
  5. 数据结构之栈实现中缀转后缀并计算结果
  6. HTTP协议中request报文请求方法和状态响应码
  7. child计算机英语作文,范文:The One-Child Family
  8. bfv同态加密_lattigo: 基于Lattice代数结构的Go同态加密库
  9. SAP License:SAP S/4HANA Cloud介绍
  10. android 寺库trytry_寺库与美图达成战略合作美图美妆APP将由TryTry运营_联商网
  11. iMindMap12思维导图如何制作导图教程
  12. Chrome浏览器V43版本不支持silverlight 5.0的解决办法
  13. html矩形变圆形的代码,html5canvas绘制矩形和圆形的实例代码.pdf
  14. php api权限,如何设计RESTful的API权限
  15. uboot_v2016 版本中fw_printenv的编译问题
  16. 新的深度学习模型可以准确识别睡眠阶段
  17. delphi fastreport4.5 的使用
  18. 程序员复工后被裁,600万房21000房贷无力偿还,给年轻人3点忠告
  19. macbook pro window蓝牙驱动 下载
  20. 字符串处理StringTokenizer

热门文章

  1. Android 解决高德地图签名后无法定位的问题
  2. 第1章第9节:如何置入其它演示文稿中的幻灯片 [PowerPoint精美幻灯片实战教程]
  3. 深入理解MySQL——关于checkpoint机制
  4. 微信小程序之 var和let区别
  5. oracle column ambiguously defined
  6. 自动挂载服务器vhd,又一个 挂载 vhd 并分配指定盘符的 vbs
  7. excel设置单元格不可编辑
  8. python怎么打出长下划线_python长的下划线怎么打
  9. 用定时器Timer方式实现时间的精准控制
  10. 杂谈:我的百度账号被盗