题解 | #计算一元二次方程#
计算一元二次方程
http://www.nowcoder.com/practice/7da524bb452441b2af7e64545c38dc26
#include <stdio.h>
#include <math.h>
double zhengen(double m, double n, double d)//实现一元二次方程求根公式函数+
{
double x = 0;
x = (-n + sqrt(d)) / (2 * m);
return x;
}
double fugen(double m, double n, double d)//实现一元二次方程求根公式函数-
{
double x = 0;
x = (-n - sqrt(d)) / (2 * m);
return x;
}
double shibu(double m, double n)
{
double s = 0;
s = (-n) / (2 * m);
return s;
}
double xubu(double m, double d)
{
double xu = 0;
xu = sqrt(-d) / (2 * m);
return xu;
}
int main()
{
double a = 0, b = 0, c = 0,x1=0,x2=0;
while(scanf("%lf %lf %lf", &a, &b, &c)!=EOF)
{
double derta = pow(b, 2) - 4 * a * c;
if (a != 0)
{
if (derta == 0)
{
x1 = x2 = zhengen(a,b,derta);
printf("x1=x2=%.2lf\n", x1);
}
else if (derta > 0)
{
x1 =( zhengen(a, b, derta)> fugen(a, b, derta)) ? fugen(a, b, derta) : zhengen(a, b, derta);
x2 =(zhengen(a, b, derta) > fugen(a, b, derta)) ? zhengen(a, b, derta) : fugen(a, b, derta);
printf("x1=%.2lf;x2=%.2lf\n",x1,x2);
}
else if (derta < 0)
{
printf("x1=%.2lf-%.2lfi;x2=%.2lf+%.2lfi\n",shibu(a, b),xubu(a, derta), shibu(a, b), xubu(a, derta));
}
}
else
{
printf("Not quadratic equation");
}
}
return 0;
}