嗯主要就做个学习记录以后还可以当作复习求解一般有三种情况
d=bb-4a*c
根据d的大小判断
d>0 不相等实数根
d=0 相等的
d<0 共轭复数根
那既然了解了大概了就贴上代码了
#define exp pow(10,-7)//C语言中一般float都会转换double 估计是因为double精度可以15位的原因把 float只可以6位 ,而如过你想跟高的精度可以定义下面的longdoule 可以达到19位的精度了
void FangCheng()
{
double a, b, c,d,x1,x2;
printf("请输入3个数逗号隔开例如\n");
scanf("%lf,%lf,%lf", &a, &b, &c);
d = b*b - 4*a*c;
if (d==0||d>0)
{
if (d > 0)//2 不同根
{
x1 =( -b + sqrt(d)) / (2 * a);
x2 = (-b - sqrt(d)) / (2 * a);
}
if (d == 0)//相同的
{
x1 = x2 = (-b + sqrt(d)) / (2 * a);
}
printf(" x1:%.5f\n x2:%.5f\n", x1, x2);
}
else
{
double p, q;
p = -b / (2 * a)+ exp; //实部
q = sqrt(-d) / (2 * a);//虚部
//if(p==0)
// printf(" x1:%.1f i\n x2:%.1f i\n",q,q);
printf(" x1:%.6f+%.6f i\n x2:%.6f-%.6f i\n", p, q, p, q);
}
}