我是C++新手,为什么运行这个程序时,当方程有两个不同解时显示是一样 的?高手帮我看看

来源:百度知道 编辑:UC知道 时间:2024/05/24 17:07:10
#include "stdafx.h"
#include<iostream.h>
#include<math.h>

int main(int argc, char* argv[])
{
double a,b,c,detal;
cout <<"依次输入一元二次方程的系数:";
cin>>a>>b>>c;
detal=b*b-4*a*c;
if(detal<0)
cout<<"此方程无解";
else
{
if(detal=0) {
double x1=-b/(2*a);
cout<<"方程的解为:x1=x2="<< x1;
}
else
{
if(detal>0)
detal=sqrt(detal);
double x1=(-b+detal)/(2*a);
double x2=(-b-detal)/(2*a);
cout<<"方程有两个解,他们是:x1="<< x1 <<" ;"<< "x2=" << x2;
}
}
return 0;
}

错误出在 if(detal=0) 这里的等号应该改为相等操作符,即,应改为如下形式 if(detal==0),另外,这个程序的if语句使用有些不合理,优化如下:

//---------------------------------------------------------------------------

#include<iostream>
#include<cmath>
using namespace std;
int main(int argc, char* argv[])
{
double a,b,c,detal;
cout <<"依次输入一元二次方程的系数:";
cin>>a>>b>>c;
detal=b*b-4*a*c;
if(detal<0)
cout<<"此方程无解";
else if(detal==0) {
double x1=-b/(2*a);
cout<<"方程的解为:x1=x2="<< x1;
}
else
{
detal=sqrt(detal);
double x1=(-b+detal)/(2*a);
double x2=(-b-detal)/(2*a);
cout<<"方程有两个解,他们是:x1="<< x1 <<" ;"<< "x2=" << x2;
}

return 0;
}
//---------------------------------------------------------------------------

nan

#include <cstdlib>
#include