栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++编写:2176 求一元二次方程

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++编写:2176 求一元二次方程

文章目录

题目源代码


题目

【题目描述】
求一元二次方程ax2+bx+c=0的根,其中a不等于0。结果要求精确到小数点后5位。
【输入】
输入一行,包含三个浮点数a, b, c(它们之间以一个空格分开),分别表示方程的系数。
【输出】
输出一行,表示方程的解。
若两个实根相等,则输出形式为:“x1=x2=…“;
若两个实根不等,在满足根小者在前的原则,则输出形式为:“x1=…;x2=…“;
若无实根输出“No answer!”。
所有输出部分要求精确到小数点后5位,数字、符号之间没有空格。
【样例输入】
-15.97 19.69 12.02
【样例输出】
x1=-0.44781;x2=1.68075
【提示】
比较浮点数相等,由于精度问题,直接比较有时可能会出错,在比较的时候需要用一个很小的数值来进行比较,当二者之差小于这个很小的数时,就认为二者是相等的了,这个很小的数,称为精度。本题中(要求精确到小数点后5位)用到的精度为1e-6.也就是0.000001.所以对于两根浮点数x1,x2,如果要比较大小,如果fabs(x1-x2)<=1e-6,那么就是相等了。 fabs是求浮点数绝对值的函数。
注意:(1):if(条件1) 语句1; if(条件2) 语句2; (2):if(条件1) 语句1; else if(条件2) 语句2; 双if语句,条件1和条件2都要判断后,按条件执行。而if,else if 当条件1满足后,else if后的语句就不会执行。


源代码
#include
#define eps1 1e-10 //自己定一精度,用于判断浮点数大小
#define eps2 1e-6 //自己定一精度,用于判断浮点数大小
using namespace std;
int main()
{
    double a,b,c,x1,x2,g; 
    scanf("%lf%lf%lf",&a,&b,&c);
    g=b*b-4*a*c;//判别式
    if(g<0&&fabs(g)>eps1)//当判别式小于给定的精度范围内,即delta<0时,无实根
    printf("No answer!");
    else if(fabs(g)0,此时delta≈0
    {
        x1=-b/(2*a);
        if(fabs(x1)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/779111.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号