标题:一元二次方程,为什么错了?
只看楼主
Jason_
Rank: 2
来 自:浙江台州
等 级:论坛游民
帖 子:88
专家分:66
注 册:2019-7-14
结帖率:66.67%
 问题点数:0 回复次数:1 
一元二次方程,为什么错了?
程序代码:
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int main(){
    double a,b,c,d,x1,x2;
    cin>>a>>b>>c;
    x1=(-b+sqrt(b*b-4*a*c))/(2*a);
    x2=(-b-sqrt(b*b-4*a*c))/(2*a);
    d=b*b-4*a*c;
    if(d<0){
        cout<<"No answer!";
    }
    else{
        if(x1==x2){
        printf("x1=x2=%.5f",x1);
    }
        else{
            if(x1>x2){
                printf("x2=%.5f;x1=%.5f",x2,x1);
            }
            if(x1<x2){
                printf("x1=%.5f;x2=%.5f",x1,x2);
            }
        }
    }
    return 0;
}

题目链接:http://ybt.

[此贴子已经被作者于2021-1-31 15:21编辑过]

搜索更多相关主题的帖子: 方程 return printf include 一元二次 一元二次 方程 printf include return 
2021-01-31 15:15
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
double sqrt( double arg );
若 arg 小于零则,则返回实现定义值(支持的平台上为 NaN )。


    x1=(-b+sqrt(b*b-4*a*c))/(2*a);
    x2=(-b-sqrt(b*b-4*a*c))/(2*a);
    d=b*b-4*a*c;
    if(d<0){
        cout<<"No answer!";
    }

很明显,先判断 b*b-4*a*c 大于等于0,才可以使用 sqrt(b*b-4*a*c)
2021-02-01 08:43



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-504789-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.198130 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved