#include
#include
int main(int argc, char *argv[])
{
char s8IsImg = 0;
double f64VaribA;
double f64VaribB;
double f64VaribC;
double f64VaribM;
double f64VaribX1;
double f64VaribX2;
scanf("%lf %lf %lf", &f64VaribA, &f64VaribB, &f64VaribC);
if ((f64VaribB * f64VaribB) < (4 * f64VaribA * f64VaribC))
{
s8IsImg = 1;
f64VaribM = sqrt((4 * f64VaribA * f64VaribC) - (f64VaribB * f64VaribB));
}
else
{
s8IsImg = 0;
f64VaribM = sqrt((f64VaribB * f64VaribB) - (4 * f64VaribA * f64VaribC));
}
if (!s8IsImg)
{
f64VaribX1 = (-1.0 * f64VaribB + f64VaribM) / (2 * f64VaribA);
f64VaribX2 = (-1.0 * f64VaribB - f64VaribM) / (2 * f64VaribA);
printf("X1+: %lf, X2: %lf\n", f64VaribX1, f64VaribX2);
}
else
{
f64VaribM = f64VaribM * 1.0 / (2 * f64VaribA);
f64VaribX1 = -1.0 * f64VaribB / (2 * f64VaribA);
f64VaribX2 = -1.0 * f64VaribB / (2 * f64VaribA);
printf("X1: %lf + %lf*i, X2: %lf - %lf*i\n", f64VaribX1, f64VaribM, f64VaribX2, f64VaribM);
}
return 0;
}
首先,把scanf里面的%f改成%lf,printf里面不用管,其次,b*b要大于4*a*c才会有结果的。。。
将double改为float