程序哪里出现了问题
#include
#include
int main()
{
double a, b ,c,disc,x1,x2,realpart,imagpart;
scanf("%lf %lf lf%",&a,&b,&c);
printf("the equation ");
if(fabs(a)<=1e-6)
{
printf("is not a quadratic!\n");
printf("x1 = x2 = %lf",-(c/b));
}
else
{
disc = b*b-4*a*c;
if(fabs(disc)<=1e-6)
{
printf("has two equal roots:%lf\n",-b/(2*a));
}
else
{
if(disc>1e-6)
{
x1 = (-b+sqrt(disc))/(2*a);
x2 = (-b-sqrt(disc))/(2*a);
printf("has two real roots :\nx1 = %.2lf\nx2 = %.2lf \n",x1,x2);
}
else
{
realpart = -b/(2*a);
imagpart = sqrt(-disc)/(2*a);
printf("has complex roots :\n");
printf("%lf + %lfi\n",realpart,imagpart);
printf("%lf - %lfi\n",realpart,imagpart);
}
}
}
return 0;
}
第8行: scanf("%lf %lf lf%",&a,&b,&c); 最后一个格式控制符:lf% 这里错了,修改为: scanf("%lf %lf %lf",&a,&b,&c); 供参考:
#include<stdio.h>
#include<math.h>
int main()
{
double a, b, c, disc, x1, x2, realpart, imagpart;
scanf("%lf %lf %lf", &a, &b, &c); //scanf("%lf %lf lf%", &a, &b, &c); 修改
printf("the equation ");
if (fabs(a) <= 1e-6)
{
printf("is not a quadratic!\n");
printf("x1 = x2 = %lf", -(c / b));
}
else
{
disc = b * b - 4 * a * c;
if (fabs(disc) <= 1e-6)
{
printf("has two equal roots:%lf\n", -b / (2 * a));
}
else
{
if (disc > 1e-6)
{
x1 = (-b + sqrt(disc)) / (2 * a);
x2 = (-b - sqrt(disc)) / (2 * a);
printf("has two real roots :\nx1 = %.2lf\nx2 = %.2lf \n", x1, x2);
}
else
{
realpart = -b / (2 * a);
imagpart = sqrt(-disc) / (2 * a);
printf("has complex roots :\n");
printf("%lf + %lfi\n", realpart, imagpart);
printf("%lf - %lfi\n", realpart, imagpart);
}
}
}
return 0;
}