用结构体求一元二次方程
程序代码:#include "stdafx.h"
#include<stdio.h>
#include<math.h>
struct EquationInfoStru
{
double a; //方程系数1
double b; //方程系数2
double c; //方程系数3
int nRootStatus; //方程根的不同情况
double dRoot1;//方程的第一个根
double dRoot2;//方程的第二个根
};
int root(struct EquationInfoStru pEquaInfo)
{
EquationInfoStru a;
double p= pEquaInfo.b*pEquaInfo.b-4*pEquaInfo.a*pEquaInfo.c;
if(p>0)
{
a.nRootStatus=2;
a.dRoot1=(-pEquaInfo.b+sqrt(p))/(2*pEquaInfo.a);
a.dRoot2=(-pEquaInfo.b-sqrt(p))/(2*pEquaInfo.a);
}
if(p=0)
{
a.nRootStatus=1;
a.dRoot1=(-pEquaInfo.b)/(2*pEquaInfo.a);
a.dRoot2=(-pEquaInfo.b)/(2*pEquaInfo.a);
}
if(p<0)
{
a.nRootStatus=2;
a.dRoot1=(-pEquaInfo.b+sqrt(-p))/(2*pEquaInfo.a);
a.dRoot2=(-pEquaInfo.b-sqrt(-p))/(2*pEquaInfo.a);
}
printf("共有%d个根,分别为%lf和%lf",a.nRootStatus,a.dRoot1,a.dRoot2);
return 0;
}
int main()
{
EquationInfoStru pEquaInfo={0,0,0,0,0,0};
printf("输入方程的三个系数\n");
scanf("%lf%lf%lf",pEquaInfo.a,pEquaInfo.b,pEquaInfo.c);
root(pEquaInfo);
return 0;
}用结构体求一元二次方程,怎么修改以上程序,怎么在结构体中定义的double中输出虚根,求各位大神指教




