c语言求解一元2次方程
时间: 2024-10-24 20:06:47 浏览: 17
c语言求解一元二次方程问题
在C语言中,可以使用公式法来求解一元二次方程ax² + bx + c = 0。其中a、b和c是已知系数,我们通常需要检查判别式Δ = b² - 4ac是否大于零,以确定方程有几个实根。以下是基本步骤:
1. 检查判别式:
如果Δ > 0,有两个不相等的实根;
如果Δ = 0,有一个重根;
如果Δ < 0,有两个共轭复数根。
2. 计算根:
实数根计算公式是 x = [-b ± sqrt(b² - 4ac)] / (2a)。
以下是简单的C函数示例,用于求解一元二次方程:
```c
#include <stdio.h>
#include <math.h> // 引入数学库以使用sqrt()函数
// 函数声明
double quadratic(double a, double b, double c);
int main() {
double a, b, c;
printf("请输入二次方程的系数a, b, c: ");
scanf("%lf %lf %lf", &a, &b, &c); // 输入系数
if (a == 0) { // 防止除以零
printf("错误:a不能为0.\n");
} else {
double discriminant = b * b - 4 * a * c; // 判别式
double root1, root2;
// 根据判别式的值计算根
if (discriminant > 0) {
root1 = (-b + sqrt(discriminant)) / (2 * a);
root2 = (-b - sqrt(discriminant)) / (2 * a);
printf("两个实根是: %.2lf 和 %.2lf\n", root1, root2);
} else if (discriminant == 0) {
root1 = -b / (2 * a);
printf("唯一实根是: %.2lf\n", root1);
} else {
complex<double> root1(complex<double>(-b, sqrt(-b, -sqrt(-discriminant)) / (2 * a));
printf("两个共轭复数根是: %.2lf + %.2lfi 和 %.2lf - %.2lfi\n",
real(root1), imag(root1), real(root1), imag(root1));
}
}
return 0;
}
// 定义求解二次方程的函数
double quadratic(double a, double b, double c) {
// 二次方程的通用形式,这里省略了判别式的检查
return (-b + sqrt(b*b - 4*a*c)) / (2*a);
}
```
阅读全文