1205: 求一元二次方程的实数根(C)
一、题目
acm.wust.edu.cn/problem.php?id=1205&soj=0
二、分析
- 一元二次方程有三个系数a、b、c,两个根x1、x2,以及d(德尔塔);
- a、b、c均为实数,以及输出保留6位小数,全部定义为double类型;
- a、b、c均为0,退出并结束;
- 方程有两个根,从大到小输出,中间一个空格;
- 两根相同输出一个即可;
- 无解输出-1;
- 多组输入。
三、思路
计算d(德尔塔):
- d=0,x1=-b/(2*a),输出x1;
- d>0,x1=(-b+sqrt(d))/(2*a),x2=(-b-sqrt(d))/(2*a),用fmax,fmin函数,依次输出较大数,较小数;
- 否则,输出-1。
四、代码
#include<stdio.h>
#include<math.h>
int main() {
double a, b, c, d, x1, x2; // 三个系数,德尔塔,两个根
while (scanf("%lf%lf%lf", &a, &b, &c) != EOF) {
// 三个系数均为0,退出
if (a == 0 && b == 0 && c == 0) {
break;
}
d = b * b - 4 * a*c; // 计算德尔塔
if (d == 0) { // 一个根
x1 = -b / (2 * a);
printf("%lf\n", x1);
}
else if (d > 0) { // 两个根
x1 = (-b + sqrt(d)) / (2 * a);
x2 = (-b - sqrt(d)) / (2 * a);
// 先输出较大的,再输出较小的
printf("%lf %lf\n", fmax(x1, x2), fmin(x1, x2));
}
else { // 无解
printf("%d\n", -1);
}
}
return 0;
}
五、截图
备注:注意第二组数据。
1205: 求一元二次方程的实数根(C)的更多相关文章
- OpenJudge计算概论-求一元二次方程的根【含复数根的计算、浮点数与0的大小比较】
/*====================================================================== 求一元二次方程的根 总时间限制: 1000ms 内存限 ...
- Openjudge-计算概论(A)-求一元二次方程的根
描述: 利用公式x1 = (-b + sqrt(b*b-4*a*c))/(2*a), x2 = (-b - sqrt(b*b-4*a*c))/(2*a)求一元二次方程ax2 + bx + c =0的根 ...
- 计算概论(A)/基础编程练习1(8题)/4:求一元二次方程的根
#include<stdio.h> #include<math.h> int main() { // 待解方程数目 int n; scanf("%d", & ...
- C++分支结构,求一元二次方程的根
总时间限制: 1000ms 内存限制: 65536kB 描述 利用公式x1 = (-b + sqrt(b*b-4*a*c))/(2*a), x2 = (-b - sqrt(b*b-4*a*c))/ ...
- ocrosoft 1015 习题1.22 求一元二次方程a*x^2 + b*x + c = 0的根
http://acm.ocrosoft.com/problem.php?id=1015 题目描述 求一元二次方程a*x2 + b*x + c = 0的根.系数a.b.c为浮点数,其值在运行时由键盘输入 ...
- 基于linux或windows的c/s的循环服务器求一元二次方程的根
在linux和windows上实现 c/s模式 socket循环服务器求解一元二次方程的根 ax^2+bx+c=0 根据上式,客户端发送a,b,c给服务器,返回求解的根 暂未考虑非法数据等问题 lin ...
- 用c#求一元二次方程
题目:编一个程序,输入a .b.c 的值,求出一元二次方程a*x*x+b*x+c=0的二个实数根. 我的思路: 我们都知道数学中求一元二次方程有很多方法:直接开方法.配方法.公式法.分解因式法等等,在 ...
- 【Python实践-1】求一元二次方程的两个解
知识点: import sys, sys模块包含了与Python解释器和它的环境有关的函数. “sys”是“system”的缩写.sys.exit() 中途退出程序, (注:0是正常退出,其他为不正常 ...
- Python编写“求一元二次方程的解”
#求一元二次方程的解 import math def equation(a,b,c): h=b*b-4*a*c #一元二次方程的解,百度来的 if h>=0: x1=(-b+math.sqrt( ...
随机推荐
- linux下设置tomcat自启动
怎么设置linux安装了tomcat之后让tomcat开机就启动呢? 下来我们来简单的说一下: 第一步@1: 首先我们找到tomcat的安装的位置,找到之后我们cd到tomcat的bin目录下面; 我 ...
- Tecplot如何提取三维图中某条线的数据【转载】
转载自:http://blog.sina.com.cn/s/blog_9de422500102v9by.html 截取线所在的面Data.Extract .slice from Plane,显示如下窗 ...
- 命令行启动模块的Python代码研究
pyrasite的 __requires__ = 'pyrasite==2.0' import re import sys from pkg_resources import load_entry_p ...
- what should I use .post vs .ajax?
what should I use .post vs .ajax? 问题: I've always had this dilemma困境 whether to use .post or .ajax f ...
- 请解释一下 JavaScript 的同源策略
概念: 同源策略是客户端脚本(尤其是Netscape Navigator2.0,其目的是防止某个文档或脚本从多个不同源装载. 这里的同源策略指的是:协议,域名,端口相同,同源策略是一种安全协议. 指一 ...
- LoadRunner11下载、安装与破解
目前LoadRunner最新版本已经更新到LR12了,但是只有试用版本,最多只支持50人的并发,所以我们还是只能用LR11的破解版,毕竟商用 版是真的很贵,一般企业怕是都不会去购买. 1.LoadRu ...
- 40 Flutter仿京东商城项目签名验证原理、签名验证算法
加群452892873 下载对应40课文件,运行方法,建好项目,直接替换lib目录 pubspec.yaml crypto: ^ SignServices.dart import 'dart:conv ...
- 【422】Insert often-used pieces of text in gedit
Ref: Snippets Enable Snippets Plugin Browse Snippets Using Snippets To insert a nippet into your cur ...
- SpringMVC+Ajax实现文件批量上传和下载功能实例代码
需求: 文件批量上传,支持断点续传. 文件批量下载,支持断点续传. 使用JS能够实现批量下载,能够提供接口从指定url中下载文件并保存在本地指定路径中. 服务器不需要打包. 支持大文件断点下载.比如下 ...
- plupload上传大文件
大容量文件上传早已不是什么新鲜问题,在.net 2.0时代,HTML5也还没有问世,要实现这样的功能,要么是改web.config,要么是用flash,要么是用一些第三方控件,然而这些解决问题的方法要 ...