判断一元二次方程的根的c语言
时间: 2024-09-19 10:17:21 浏览: 44
一元二次方程求根(小白易懂版)
在C语言中,判断一元二次方程ax² + bx + c = 0是否有实数根,通常需要计算判别式Δ=b² - 4ac。如果判别式大于0,说明有两个不相等的实数根;等于0则有一个重根(即两个相同的实根);小于0,则无实数根,但可能存在复数解(在数学上称为虚根)。以下是简单的步骤:
```c
#include <stdio.h>
#include <math.h>
// 函数声明,用于计算判别式和根
double calculateDiscriminant(double a, double b, double c);
double calculateRoots(double a, double b, double c);
int main() {
double a, b, c;
printf("请输入一元二次方程的系数(a, b, c): ");
scanf("%lf %lf %lf", &a, &b, &c);
double discriminant = calculateDiscriminant(a, b, c);
if (discriminant > 0) {
printf("方程有两个不相等的实数根:\n");
printf("x1 = %.2lf\n", calculateRoots(a, b, c)[0]);
printf("x2 = %.2lf\n", calculateRoots(a, b, c)[1]);
} else if (discriminant == 0) {
printf("方程有一个重根:\n");
printf("x = %.2lf\n", calculateRoots(a, b, c));
} else {
printf("方程无实数根,有共轭复数解.\n");
}
return 0;
}
// 计算判别式
double calculateDiscriminant(double a, double b, double c) {
return b * b - 4 * a * c;
}
// 计算根(如果判别式非负)
double calculateRoots(double a, double b, double c)[2] {
double sqrt_val = sqrt(fabs(discriminant)); // 取绝对值以防结果为负
return (-b + sqrt_val) / (2 * a), (-b - sqrt_val) / (2 * a);
}
```
阅读全文