C语言给定一元二次方程的三个系数a,b,c,求根x1和x2
时间: 2024-09-21 11:02:54 浏览: 67
在C语言中,解决一元二次方程通常使用卡丹公式(也称作二次公式),它的通用形式是:
\[ x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a} \]
如果你有一个一元二次方程 \( ax^2 + bx + c = 0 \),其中 \( a \), \( b \) 和 \( c \) 是已知的系数,你可以编写一个函数来计算两个解 \( x_1 \) 和 \( x_2 \)。下面是一个简单的函数实现示例:
```c
#include <stdio.h>
#include <math.h> // 引入数学库,用于计算平方根
// 函数声明,接受三个float类型的参数并返回两个double类型的解
void solveQuadratic(float a, float b, float c, double* roots);
int main() {
float a, b, c;
printf("请输入二次方程的系数a, b, c: ");
scanf("%f %f %f", &a, &b, &c); // 输入系数
double roots[2]; // 存储两个解
solveQuadratic(a, b, c, roots);
// 检查是否需要考虑负判别式的情况
if (b * b - 4 * a * c > 0) { // 如果判别式大于0有实根
printf("解1: %.2lf\n", roots[0]);
printf("解2: %.2lf\n", roots[1]);
} else if (b * b - 4 * a * c == 0) { // 如果判别式等于0有一个实根
printf("唯一解: %.2lf\n", roots[0]);
} else { // 若判别式小于0,无实根
printf("方程无实数解.\n");
}
return 0;
}
// 解决二次方程的函数
void solveQuadratic(float a, float b, float c, double* roots) {
*roots = (-b + sqrt(b * b - 4 * a * c)) / (2 * a);
*(roots + 1) = (-b - sqrt(b * b - 4 * a * c)) / (2 * a);
}
```
在这个程序中,`solveQuadratic`函数负责计算根,并在主函数中处理输入和打印结果。
阅读全文