王鹿其 发表于 2023-11-8 19:14:01

求方程的根,结果不对

#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;
}

isdkz 发表于 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;
}


这样修改后,程序就能正确判断方程的根了。
页: [1]
查看完整版本: 求方程的根,结果不对