题目描述

利用公式 x1 = (-b + sqrt(b* b-4* a* c))/(2* a), x2 = (-b - sqrt(b* b-4* a* c))/(2* a) 求一元二次方程 ax^2 + bx + c =0的根,其中a不等于0。

输入格式

第一行是待解方程的数目 n。
其余 n 行每行含三个浮点数 a, b, c(它们之间用空格隔开),分别表示方程 ax^2 + bx + c =0 的系数。

输出格式

输出共有 n 行,每行是一个方程的根:
若是两个实根,则输出:x1=…;x2 = …
若两个实根相等,则输出:x1=x2=…
若是两个虚根,则输出:x1=实部+虚部i; x2=实部-虚部i

所有实数部分要求精确到小数点后5位,数字、符号之间没有空格。
x1 和 x2 的顺序:x1的实部 > Re的实部 || (x1的实部 == x2的实部 && x1的虚部 >= x2的虚部)

输入样例

3
1.0 3.0 1.0
2.0 -4.0 2.0
1.0 2.0 8.0

输出样例

x1=-0.38197;x2=-2.61803
x1=x2=1.00000
x1=-1.00000+2.64575i;x2=-1.00000-2.64575i

思路

按照题意所述一步步计算即可,先按照求根公式求出 Δ = b2 - 4 * a * c,再定义一个 x = (-b) / (2 * a).
唯一需要注意的是,这里需要特判一下,当 x = 0 时,仍然输出 0 , 不然可能会输出 -0.

代码如下

#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;int main()
{int n;cin >> n;while (n--){double a, b, c;cin >> a >> b >> c;double f = b * b - 4 * a * c;double x = (-b) / (2 * a);//特判一手if (x == 0) x = 0;if (f > 0) //Δ > 0,有两个根{double x1 = (-b + sqrt(f)) / (2*a), x2 = (-b - sqrt(f)) / (2*a);printf("x1=%.5f;x2=%.5f\n", x1, x2);}else if (f == 0) //Δ = 0,有单根{printf("x1=x2=%.5f\n", x);}else if (f < 0) //Δ < 0,有两个复数根,其中两个虚部一定相等{f = - f;double y = sqrt(f) / (2 * a);printf("x1=%.5f+%.5fi;x2=%.5f-%.5fi\n", x, y, x, y);}}return 0;
}

PTA 7 - 3 h0053.求一元二次方程的根相关推荐

  1. C语言小白初试 7-1 求一元二次方程的根 (20 分)

    7-1 求一元二次方程的根 (20 分) 本题目要求一元二次方程的根,结果保留2位小数. 输入格式: 输入在一行中给出3个浮点系数a.b.c,中间用空格分开. 输出格式: 根据系数情况,输出不同结果: ...

  2. 计算概论(A)/基础编程练习1(8题)/4:求一元二次方程的根

    1 #include<stdio.h> 2 #include<math.h> 3 int main() { 4 // 待解方程数目 5 int n; 6 scanf(" ...

  3. OpenJudge NOI 1.4 20:求一元二次方程的根

    [题目链接] OpenJudge NOI 1.4 20:求一元二次方程的根 [题目考点] 1. 一元二次方程求根 包括求实根与虚根 2. if-else if-else语句 3. 浮点数比较 [解题思 ...

  4. 7-157 求一元二次方程的根 (20 分)

    7-157 求一元二次方程的根 (20 分) 本题目要求一元二次方程ax2+bx+c=0的根,结果保留2位小数. 输入格式: 输入在一行中给出3个浮点系数a.b.c,中间用空格分开. 输出格式: 根据 ...

  5. c语言学习-求一元二次方程的根

    求一元二次方程的根 程序流程图: 代码: #include<stdio.h> #include<math.h> void main() {float a,b,c,s,x1,x2 ...

  6. 实验3-1 求一元二次方程的根 (20 分)

    实验3-1 求一元二次方程的根 (20 分) 本题目要求一元二次方程ax^2+bx+c=0的根,结果保留2位小数. 输入格式: 输入在一行中给出3个浮点系数a.b.c,中间用空格分开. 输出格式: 根 ...

  7. 例题(8.3) 求一元二次方程的根 (1051)

    题目 - 例题(8.3) 求一元二次方程的根 (1051)   来源 计算概论05 描述 利用公式  x1 = (-b + sqrt(b*b-4*a*c))/(2*a)  x2 = (-b - sqr ...

  8. Python 求一元二次方程的根(包括虚根)

    如图所示,求一元二次方程的根(包括虚根),代码如下: import math a = float(input()) b = float(input()) c = float(input()) delt ...

  9. Java求一元二次方程的根

    求一元二次方程的根. [问题描述]编写程序,从键盘输入三个系数ax2+bx+c=0,计算方程的解并输出.需要考虑方程有虚根.方程有实根.方程是一元一次方程.没有根等.输出方程的解并保留6位小数. im ...

最新文章

  1. 网络技术工程师专业核心 | 网络技术工程师就业方向
  2. 消费级GPU、速度提升3000倍,微软FastNeRF实现200FPS高保真神经渲染
  3. matlab均线程序化交易,【策略分享】Matlab量化交易策略源码分享
  4. 写得好的html网页,优化网站排名-使用Markdown编写更好的内容和HTML
  5. 2020年上半年巨量引擎手机行业白皮书
  6. 使用LXCFS实现容器资源的视图隔离
  7. 电力项目十--整合文本编辑器
  8. php 关键词回复 图片,php微信开发之关键词回复功能
  9. In-App Purchase 实战
  10. 疾病自动编码(ICD Coding)任务的调研
  11. 游戏测试成长之路02-测试用例
  12. 安装DCOS,关于docker异常引发的调查
  13. 哪吒之魔童降世视听语言影评_《哪吒之魔童降世》观后感——不用吹爆,但值得点赞...
  14. 安装R包的几种方法(汇总)
  15. Android手机连接蓝牙播放时,蓝牙设备如何显示歌名、专辑、歌手等信息?
  16. 解决swagger几种报错问题
  17. IOT网关开发受难记-(一) 2022/05/13
  18. 【设计模式】我对设计模式的C语言解读(下)
  19. 什么是大数据?大数据有什么用?
  20. CTF论剑场学习——杂项

热门文章

  1. Unity --- 虚拟轴的使用
  2. redis的几种连接方式
  3. 高考满分作文生成器来了!分分钟批量完成「生活在XX上」,哲学文学物理各种领域任选...
  4. python t检验显著差异_两组数据的均值是否具有显著差异的T检验
  5. java基于ssm美食论坛系统发帖子系统美食论坛网站美食分享论坛源码
  6. 使用D3D渲染YUV_RGB
  7. HDU 4022 Bombing c++解法
  8. wpa或者wpa2暴力破解WiFi
  9. 强光LED手电筒方案开发设计
  10. Android应用性能优化!Android架构师必备框架技能核心笔记,一文轻松搞定