鱼C论坛

 找回密码
 立即注册
查看: 918|回复: 1

求方程的根,结果不对

[复制链接]
发表于 2023-11-8 19:14:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<iostream>
#include<cmath>
using namespace std;
void root(double a,double b ,double c)
{
        double delta=b*b-4*a*c;
        if(delta>0)
        {
                double root1,root2;
                root1=(-b+sqrt(delta))/2*a;
                root2=(-b-sqrt(delta))/2*a;
                cout<<"原方程有两个根,分别为"<<root1<<"  "<<root2<<endl;
        }
        else if(delta=0)
        {
                int root;
                root=-b/2*a;
                cout<<"原方程有一个根,为"<<root<<endl;
        }
        else
        {
                cout<<"原方程没有根"<<endl;
        }
       
       
}
int main()
{
        double a,b,c;
        cout<<"请输入a,b,c的值:";
        cin>>a>>b>>c;
       
        root(a,b,c);
       
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-8 19:14:44 | 显示全部楼层
问题出在等号的判断上。在if语句中,应该使用双等号(==)来进行判断,而不是单等号(=)。单等号是赋值操作,而双等号是判断操作。

修改后的代码如下:
#include<iostream>
#include<cmath>
using namespace std;
void root(double a,double b ,double c)
{
    double delta=b*b-4*a*c;
    if(delta>0)
    {
        double root1,root2;
        root1=(-b+sqrt(delta))/2*a;
        root2=(-b-sqrt(delta))/2*a;
        cout<<"原方程有两个根,分别为"<<root1<<"  "<<root2<<endl; 
    }
    else if(delta==0) // 修改这里的等号判断
    {
        double root;
        root=-b/2*a;
        cout<<"原方程有一个根,为"<<root<<endl;
    }
    else
    {
        cout<<"原方程没有根"<<endl;
    }
    
    
}
int main()
{
    double a,b,c;
    cout<<"请输入a,b,c的值:";
    cin>>a>>b>>c;
    
    root(a,b,c);
    
    return 0;
}

这样修改后,程序就能正确判断方程的根了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-7-1 21:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表