c语言 编写程序,判断并输出一元二次方程ax2+bx+c=0的根(求平方根可使用sqrt( )函数)。
时间: 2024-10-25 10:18:24 浏览: 62
在C语言中,编写程序来判断并输出一元二次方程 ax^2 + bx + c = 0 的根需要使用数学公式和条件判断。这里我们假设 a 不等于 0,因为当 a=0 时,它就不再是二次方程了。下面是一个简单的步骤:
1. 首先,计算判别式 D = b^2 - 4ac。这个值决定了方程的根的情况:
- 如果 D > 0,则有两个实数根;
- 如果 D = 0,则有一个实数根(即重根);
- 如果 D < 0,则无实数根,但有复数解。
2. 根据判别式的值,分别处理三种情况:
- 实数根:使用公式 x1,2 = [-b ± sqrt(D)] / (2a) 计算两个根,并打印它们。
- 重根:x1 = -b / (2a),只打印这一个根。
- 复数根:由于 C 语言本身并不支持复数运算,可以简单地提示用户方程没有实数根。
以下是代码示例:
```c
#include <stdio.h>
#include <math.h>
int main() {
double a, b, c, discriminant, root1, root2;
// 输入系数
printf("请输入一元二次方程的系数 a, b 和 c:\n");
scanf("%lf %lf %lf", &a, &b, &c);
// 计算判别式
discriminant = b * b - 4 * a * c;
if (a == 0) {
printf("错误!a不能为0。\n");
} else {
// 实数根
if (discriminant >= 0) {
root1 = (-b + sqrt(discriminant)) / (2 * a);
root2 = (-b - sqrt(discriminant)) / (2 * a);
printf("方程的根为:\n%.2lf 和 %.2lf\n", root1, root2);
}
// 重根
else {
root1 = -b / (2 * a);
printf("方程的唯一根为:%.2lf\n", root1);
}
}
return 0;
}
```
阅读全文