C语言编程实现 求一元二次方程 ax2+bx+c=0的实根和虚根并输出结果。要求: 分别求出Δ>=0及Δ<0两种情况求解
时间: 2024-10-19 15:14:18 浏览: 32
C语言下的 一元二次方程 求解
3星 · 编辑精心推荐
在C语言中,我们可以使用数学库中的函数来处理复数运算,但是标准C库本身并不支持复数类型,所以我们需要借助一些额外的方法来实现这个功能。这里可以使用`cmath`库,同时通过判断判别式`Δ=b^2 - 4ac`来确定方程的根是实数还是复数。
以下是一个简单的C程序示例,它实现了求解一元二次方程的实根和虚根:
```c
#include <stdio.h>
#include <math.h>
// 定义复数结构体
typedef struct {
double real;
double imag; // 实部和虚部
} Complex;
// 计算复数乘法和加法
Complex complex_mul(Complex a, Complex b) {
Complex result;
result.real = a.real * b.real - a.imag * b.imag;
result.imag = a.real * b.imag + a.imag * b.real;
return result;
}
// 计算判别式
double discriminant(double a, double b, double c) {
return b * b - 4 * a * c;
}
// 解析式求解
void quadratic_equation(double a, double b, double c) {
double delta = discriminant(a, b, c);
if (delta >= 0) { // 实数根
double root1 = (-b + sqrt(delta)) / (2 * a);
double root2 = (-b - sqrt(delta)) / (2 * a);
printf("实数根1: %.2lf\n", root1);
printf("实数根2: %.2lf\n", root2);
} else { // 虚数根
double real_part = -b / (2 * a);
double imag_part = sqrt(-delta) / (2 * a);
printf("复数根: (%.2lf, %.2lf)i\n", real_part, imag_part);
}
}
int main() {
double a, b, c;
printf("请输入一元二次方程系数a, b, c: ");
scanf("%lf %lf %lf", &a, &b, &c);
quadratic_equation(a, b, c);
return 0;
}
```
阅读全文