2.求方程ax'+bx+c=0 的根,用3个函数分别求当:b-4ac大于0、等于0和小于0时的根并输出结果。从主函数输入a,b.c的值。用c语言写
时间: 2024-12-20 15:29:08 浏览: 8
用Java编写程序,求一元二次方程ax²+bx+c=0的根(系数在程序中给定),并输出。
在C语言中,你可以创建三个函数分别针对一元二次方程ax^2 + bx + c = 0的不同情况求解根。这里我们假设该方程有两个实根。当判别式b² - 4ac > 0时,有两不同实根;当b² - 4ac = 0时,有一个重根;当b² - 4ac < 0时,无实根(但有两个复数根)。下面是对应的代码:
```c
#include <stdio.h>
#include <math.h>
// Function to find roots when discriminant is positive
void solve_positive Discriminant(double a, double b, double c) {
double root1, root2;
double delta = b * b - 4 * a * c;
if (delta > 0) {
root1 = (-b + sqrt(delta)) / (2 * a);
root2 = (-b - sqrt(delta)) / (2 * a);
printf("Roots for b² - 4ac > 0 are: %.2lf and %.2lf\n", root1, root2);
} else {
printf("No real roots.\n");
}
}
// Function to find root when discriminant is zero
void solve_zero_Discriminant(double a, double b, double c) {
double root = -b / (2 * a);
printf("Root for b² - 4ac = 0 is: %.2lf\n", root);
}
// Function to handle complex roots when discriminant is negative
void solve_negative_Discriminant(double a, double b, double c) {
double realPart = -b / (2 * a);
double imaginaryPart = sqrt(-1 * (4 * a * c - b * b)) / (2 * a);
printf("Roots for b² - 4ac < 0 are: %.2lf + %.2lfi and %.2lf - %.2lfi\n",
realPart, imaginaryPart, realPart, imaginaryPart);
}
int main() {
double a, b, c;
printf("Enter coefficients a, b, and c:\n");
scanf("%lf %lf %lf", &a, &b, &c);
if (b * b - 4 * a * c > 0)
solve_positive_Discriminant(a, b, c);
else if (b * b - 4 * a * c == 0)
solve_zero_Discriminant(a, b, c);
else
solve_negative_Discriminant(a, b, c);
return 0;
}
```
在这个程序中,用户会被提示输入a, b, c的值,然后根据判别式的值,相应地调用这三个函数来计算和输出根。注意,对于负判别式的复数根,我们使用了复数i(即√-1),并指出了其实部和虚部。
阅读全文