一元二次方程求解首先理思路,第一判断a是否为0来判断是否为一元二次方程,第二判断b^2-4ac的正负,第三根据求根公式来求解。
#include <stdio.h>
#include <math.h>
int main() {
float a, b, c;
//设出a,b,c
float x1, x2;
float d;
//设出b^2-4ac
float e;
//设出虚根
while ((scanf("%f %f %f", &a, &b, &c)) != EOF) {
if (a != 0) {
d = b * b - 4 * a * c;
e = sqrt(d) / (2 * a);
if (d > 0) {
x1 = -b / (2 * a) - e;
x2 = -b / (2 * a) + e;
printf("x1=%.2f;x2=%.2f\n", x1, x2);
} else if (d == 0) {
x1 = -b / (2 * a);
x2 = -b / (2 * a);
if (x1 != 0) {
printf("x1=x2=%.2f\n", x1);
} else {
printf("x1=x2=0.00\n");
}
} else {
e = sqrt(-d) / (2 * a);
//由于虚根无法表示,采用实根即为x1,x2,虚根采用虚根值加上i来表示
x1 = -b / (2 * a);
x2 = -b / (2 * a);
printf("x1=%.2f-%.2fi;x2=%.2f+%.2fi\n", x1, e, x2, e);
}
} else {
printf("Not quadratic equation\n");
}
}
return 0;
}