有些精确度问题吧?!
#include
#include
int main()
{
double a,b,c,p,q,disc,x1,x2;
scanf("%lf %lf %lf",&a,&b,&c); // double类型的字节长度为8,float为4.
disc=b*b-4*a*c;
if(disc<0)
printf("NO USEFULL ANSWER\n");
else
{
p=-b/(2*a);
q=sqrt(disc)/(2*a);
x1=p-q;
x2=p+q;
printf("x1=%lf\nx2=%lf",x1,x2);
};
return 0;
}
#include
#include
int main()
{
float a,b,c;
double p,q,disc,x1,x2;
scanf("%f%f%f",&a,&b,&c);
disc=b*b-4*a*c;
if(disc<0)
printf("NO USEFULL ANSWER\n");
else
{
p=-b/(2*a);
q=sqrt(disc)/(2*a);
x1=p-q;
x2=p+q;
printf("x1=%f\nx2=%f",x1,x2);
};
return 0;
}
把a,b,c定义为float型,其他的变量定义为double型比较好!
经测试能得出正确结果!
scanf("%lf%lf%lf",&a,&b,&c);
printf("x1=%lf\nx2=%lf",x1,x2);
double 输入输出格式要用 %lf (小写 的字母 LF)
怎么了?