题解 | 计算一元二次方程
计算一元二次方程
https://www.nowcoder.com/practice/7da524bb452441b2af7e64545c38dc26
#include <stdio.h>
#include <math.h>
int main(void)
{
float a = 0;
float b = 0;
float c = 0;
float medi_value = 0.0;
float result_1 = 0.0;
float result_2 = 0.0;
while (scanf("%f %f %f", &a, &b, &c) != EOF)
{
medi_value = powf(b, 2) - 4 * a * c;
if (a == 0)
{
printf("Not quadratic equation");
}
else
{
if (medi_value == 0)
{
result_1 = result_2 = (-b) / (2 * a);
result_1 = result_1 == -0.0 ? 0.00 : result_1;
result_2 = result_2 == -0.0 ? 0.00 : result_2;
printf("x1=x2=%.2f\n", result_1);
}
else if (medi_value > 0)
{
result_1 = ((-b) - sqrtf(medi_value)) / (2 * a);
result_2 = ((-b) + sqrtf(medi_value)) / (2 * a);
result_1 = result_1 == -0.0 ? 0.00 : result_1;
result_2 = result_2 == -0.0 ? 0.00 : result_2;
printf("x1=%.2f;x2=%.2f\n", result_1, result_2);
}
else
{
result_1 = (-b) / (2 * a);
result_2 = sqrt(-medi_value) / (2 * a);
result_1 = result_1 == -0.0 ? 0.00 : result_1;
result_2 = result_2 == -0.0 ? 0.00 : result_2;
printf("x1=%.2f-%.2fi;x2=%.2f+%.2fi\n", result_1, result_2, result_1, result_2);
}
}
}
return 0;
}
