为什么一元二次方程式的根显示 -1.#INF [C++]

时间:2021-05-25 17:44:13
题目是求一元二次方程ax^2+bx+c=0的根,分别考虑a=0(1次方程)和b*b-4*a*c<0(无实根的情况),

当a,b,c输入-1,3,8时,显示x1=1.#INF, x2=-1.#INF,是逻辑上哪里有问题,还是VC++6.0本身的问题?

先谢了,各位


#include<iostream>
#include<cmath>
using namespace std;

void equation(double a,double b,double c)
{
double s=b*b-4*a*c;
double x1,x2;
if(a=0)
{
if(b=0)
cout<<"Equation is error"<<endl;
else
{
x1=x2=-1*c/b;
cout<<"x1=x2="<<x1<<endl;
}
}
else if(s<0)
cout<<"b*b-4*a*c<0 so no real root"<<endl;
else
{
x1=(-1*b+sqrt(s))/(2*a);
x2=(-1*b-sqrt(s))/(2*a);
cout<<"x1="<<x1<<" x2="<<x2<<endl;
}
}

int main()
{
int i;
double a,b,c;
cout<<"pls enter a,b,c value"<<endl;
cin>>a>>b>>c;
equation(a,b,c);
return 0;
}

5 个解决方案

#1


if(b=0)
//里面写成==就对了。。。

#2


if(a == 0)

#3


=改为==

#4


if(a=0)

建议全部写成

if(0==a)

这样如果少些了一个=,编译器会告诉你

#5


引用 4 楼  的回复:
if(a=0)

建议全部写成

if(0==a)

这样如果少些了一个=,编译器会告诉你


++

#1


if(b=0)
//里面写成==就对了。。。

#2


if(a == 0)

#3


=改为==

#4


if(a=0)

建议全部写成

if(0==a)

这样如果少些了一个=,编译器会告诉你

#5


引用 4 楼  的回复:
if(a=0)

建议全部写成

if(0==a)

这样如果少些了一个=,编译器会告诉你


++