题解 | #计算一元二次方程#
计算一元二次方程
http://www.nowcoder.com/practice/7da524bb452441b2af7e64545c38dc26
-
#include<stdio.h>
-
#include<math.h>
-
int ifsize(float a, float b, float c, double sum)
-
{
-
if (sum == 0)
-
{
-
return 0;
-
}
-
else if (sum > 0)
-
{
-
return 1;
-
}
-
else
-
{
-
return -1;
-
}
-
}
-
int main()
-
{
-
float a = 0;
-
float b = 0;
-
float c = 0;
-
while (scanf("%f %f %f", &a, &b, &c) != EOF)
-
{
-
double sum = (b * b) - (4 * a * c);
-
if (a == 0.0)
-
{
-
printf("Not quadratic equation\n");
-
}
-
else
-
{
-
int sz = ifsize(a, b, c, sum);
-
if (sz == 0)
-
{
-
double ret1 = (-b) / (2 * a);
-
if (ret1 == 0.00)
-
printf("x1=x2=0.00\n");
-
else
-
printf("x1=x2=%.2lf\n", ret1);
-
}
-
else if (sz > 0)
-
{
-
double ret1 = (-b + sqrt(sum)) / (2.0 * a);
-
double ret2 = (-b - sqrt(sum)) / (2.0 * a);
-
if (ret1 < ret2)
-
printf("x1=%.2lf;x2=%.2lf\n", ret1, ret2);
-
else
-
printf("x1=%.2lf;x2=%.2lf\n", ret2, ret1);
-
}
-
else
-
{
-
double p1 = (-b) / (2.0 * a);
-
double p2 = (sqrt(-sum)) / (2.0 * a);
-
if (p2 > 0)
-
printf("x1=%.2lf-%.2lfi;x2=%.2lf+%.2lfi\n", p1, p2, p1, p2);
-
else
-
printf("x1=%.2lf-%.2lfi;x2=%.2lf+%.2lfi\n", p1, -p2, p1, -p2);
-
}
-
}
-
}
-
return 0;
-
}