题解 | #计算一元二次方程#
计算一元二次方程
https://www.nowcoder.com/practice/7da524bb452441b2af7e64545c38dc26
#include <stdio.h>
#include <math.h>
int main() {
float a, b, c, d, x1, x2, m, n;
while (~scanf("%f%f%f", &a, &b, &c)) {
d = b * b - 4 * a * c;
if (a == 0) {
printf("Not quadratic equation\n");
} else if (d == 0) {
x1 = x2 = -b / (2 * a);
if (fabs(x1) < 1e-6) {
printf("x1=x2=0.00\n");
} else {
printf("x1=x2=%.2f\n", x1);
}
} else if (d > 0) {
x1 = (-b - sqrt(d)) / (2 * a);
x2 = (-b + sqrt(d)) / (2 * a);
if (fabs(x1) < 1e-6) {
printf("x1=0.00;");
} else {
printf("x1=%.2f;", x1);
}
if (fabs(x2) < 1e-6) {
printf("x2=0.00\n");
} else {
printf("x2=%.2f\n", x2);
}
} else {
m = -b / (2 * a);
n = sqrt(-d) / (2 * a);
if (n > 0) {
printf("x1=%.2f-%.2fi;x2=%.2f+%.2fi\n", m, n, m, n);
} else if (n < 0) {
printf("x1=%.2f+%.2fi;x2=%.2f-%.2fi\n", m, -n, m, -n);
} else {
if (fabs(m) < 1e-6) {
printf("x1=x2=0.00\n");
} else {
printf("x1=x2=%.2f\n", m);
}
}
}
}
return 0;
}