#include <stdio.h> #include <math.h> int main() { double a,b,c,p,q,disc,x1,x2; scanf("%f%f%f",&a,&b

2024-11-02 05:27:30
推荐回答(4个)
回答1:

有些精确度问题吧?!
#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;
}

回答2:

#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型比较好!
经测试能得出正确结果!

回答3:

scanf("%lf%lf%lf",&a,&b,&c);
printf("x1=%lf\nx2=%lf",x1,x2);

double 输入输出格式要用 %lf (小写 的字母 LF)

回答4:

怎么了?