C语言一元二次方程求根。请编程计算一元二次方程ax²+bx+c=0的根,a、b、c的值由用户从键盘输入,其中a≠0
时间: 2024-11-06 18:17:08 浏览: 23
Java Application和Applet两种方式求一元二次方程ax2+bx+c=0的根
5星 · 资源好评率100%
在C语言中,我们可以使用数学库函数`sqrt()`来计算平方根,并结合公式来求解一元二次方程的根。这里是一个简单的程序示例:
```c
#include <stdio.h>
#include <math.h> // 包含数学运算头文件
// 定义函数求解一元二次方程的两个根
void quadraticRoots(double a, double b, double c) {
double delta = b * b - 4 * a * c; // 计算判别式
if (delta > 0) { // 实数根
double root1 = (-b + sqrt(delta)) / (2 * a);
double root2 = (-b - sqrt(delta)) / (2 * a);
printf("一元二次方程有两个实根:%.2lf 和 %.2lf\n", root1, root2);
} else if (delta == 0) { // 双重根
double root = -b / (2 * a);
printf("一元二次方程有一个实根:%.2lf\n", root);
} else { // 复数根
double realPart = -b / (2 * a);
double imaginaryPart = sqrt(-delta) / (2 * a);
printf("一元二次方程无实根,有复数根:%.2lf + %.2lfi\n", realPart, imaginaryPart);
}
}
int main() {
double a, b, c;
printf("请输入一元二次方程的系数a, b, c:\na = ");
scanf("%lf", &a);
printf("b = ");
scanf("%lf", &b);
printf("c = ");
scanf("%lf", &c);
// 检查a是否为0,因为a=0不是一元二次方程
if (a != 0) {
quadraticRoots(a, b, c);
} else {
printf("错误:a不能为0,这不构成一个一元二次方程。\n");
}
return 0;
}
```
在这个程序中,首先获取用户输入的一元二次方程的系数a、b和c,然后检查a是否为零。如果a非零,则调用`quadraticRoots`函数计算并打印根。如果a为零,程序会显示错误信息。
阅读全文