求一元二次方程的根 题目内容: 根据下面给出的求根公式,计算并输出一元二次方程 的两个实根,要求精确到小数点后4位。程序中所有浮点数的数据类型均为float.用c语言怎么写
时间: 2024-10-23 20:14:30 浏览: 2123
在C语言中,你可以使用牛顿迭代法(Newton-Raphson method)或者直接使用数学库提供的函数如`sqrt()`来求解一元二次方程ax² + bx + c = 0的根。这里假设a != 0。以下是使用bisection method(二分法)和math.h库来计算实根的基本步骤:
```c
#include <stdio.h>
#include <math.h>
// 函数定义,计算一元二次方程的判别式
int discriminant(float a, float b, float c) {
return (b * b) - (4 * a * c);
}
// 计算方程的两个实根
void quadratic_roots(float a, float b, float c) {
float delta = discriminant(a, b, c);
// 如果判别式大于等于0,有两个实根
if (delta >= 0) {
float root1 = (-b + sqrt(delta)) / (2 * a);
float root2 = (-b - sqrt(delta)) / (2 * a);
printf("Root 1: %.4f\n", root1);
printf("Root 2: %.4f\n", root2);
}
// 如果判别式小于0,无实根,只输出复数根
else {
float realPart = -b / (2 * a);
float imaginaryPart = sqrt(-delta) / (2 * a);
printf("Roots are complex conjugates: %.4f + %.4fi and %.4f - %.4fi\n", realPart, imaginaryPart, realPart, imaginaryPart);
}
}
int main() {
float a, b, c; // 输入系数
printf("Enter coefficients a, b, and c (separated by space): ");
scanf("%f %f %f", &a, &b, &c);
quadratic_roots(a, b, c);
return 0;
}
```
阅读全文