#include <stdio.h>
#include <math.h>
int main() {
float a, b, c, discriminant, root1, root2, realPart, imaginaryPart;
printf("输入系数 a, b 和 c: ");
scanf("%f %f %f", &a, &b, &c);
discriminant = b*b - 4*a*c;
if (discriminant > 0) {
root1 = (-b + sqrt(discriminant)) / (2*a);
root2 = (-b - sqrt(discriminant)) / (2*a);
printf("根为: %.2f 和 %.2f\n", root1, root2);
} else if (discriminant == 0) {
root1 = -b / (2*a);
printf("根为: %.2f\n", root1);
} else {
realPart = -b / (2*a);
imaginaryPart = sqrt(-discriminant) / (2*a);
printf("根为: %.2f + %.2fi 和 %.2f - %.2fi\n", realPart, imaginaryPart, realPart, imaginaryPart);
}
return 0;
}
说明:
程序接受一元二次方程的系数a, b, c。
通过计算判别式(b2−4acb^2 - 4acb2−4ac)判断方程的解的类型。如果判别式大于0,有两个不同实根;
如果判别式等于0,有一个实根;如果判别式小于0,有两个虚根。根据不同情况输出相应的解。