c语言1. 求一元二次方程的根。
时间: 2024-11-23 07:20:00 浏览: 18
在C语言中,我们可以使用牛顿迭代法或者公式法来求解一元二次方程。这里简单介绍一种常见的方法——使用二次公式。给定一个一般形式的一元二次方程 ax^2 + bx + c = 0,其根可以通过下面的公式计算:
x = [ -b ± sqrt(b^2 - 4ac) ] / (2a)
其中 `sqrt` 表示平方根,`±` 表示两个解,分别是当判别式 b^2 - 4ac > 0(有两个实根)、等于0(有一个重根)、小于0(无实根,有复数解)时。
以下是使用C语言编写的一个函数,用于计算并返回二次方程的两个根:
```c
#include <stdio.h>
#include <math.h> // 引入数学库以便使用sqrt
double quadratic_solver(double a, double b, double c) {
double discriminant = b * b - 4 * a * c; // 判别式
if (discriminant >= 0) { // 实数根
double root1 = (- sqrt(discriminant)) / (2 * a);
return (root1, root2);
} else { // 复数根
complex double realPart = -b / (2 * a);
double imaginaryPart = sqrt(-discriminant) / (2 * a); // 使用complex库来处理复数
return (realPart, imaginaryPart);
}
}
int main() {
double a, b, c;
printf("请输入二次方程的系数a, b, c:\n");
scanf("%lf %lf %lf", &a, &b, &c);
double roots[2];
if (quadratic_solver(a, b, c) != NULL) { // 如果不是复数根,则存储结果
roots[0] = quadratic_solver(a, b, c)[0];
roots[1] = quadratic_solver(a, b, c)[1];
printf("方程的根为: %.2f 和 %.2f\n", roots[0], roots[1]);
} else {
printf("方程无实数根,有复数解。\n");
}
return 0;
}
```
阅读全文