求方程的根,结果不对
#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;
} 问题出在等号的判断上。在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]