C语言,编程求解一元二次方程 ax 2 +bx+c=0,a、b、c 由键盘输入,设 b 2 -4ac>0。
时间: 2024-10-12 20:14:13 浏览: 35
在C语言中,我们可以使用公式法来求解一元二次方程 `ax^2 + bx + c = 0`,当判别式 `b^2 - 4ac` 大于0时,意味着方程有两个不同的实根。下面是解决这个问题的基本步骤:
1. **用户输入**:
首先,我们需要从用户那里获取系数 a、b 和 c 的值。可以使用标准输入函数 `scanf()` 来获取。
```c
#include <stdio.h>
double a, b, c;
int main() {
printf("请输入一元二次方程的系数 a, b, c:\n");
scanf("%lf %lf %lf", &a, &b, &c);
```
2. **计算判别式**:
计算判别式的值 `delta = b * b - 4 * a * c`。
```c
double delta = b * b - 4 * a * c;
```
3. **检查判别式**:
判断 `delta` 是否大于0,如果大于则有实数解。
```c
if (delta > 0) {
// 接下来处理有两解的情况
}
else if (delta == 0) { // 如果 delta 等于0,则有唯一解
} else { // 如果 delta 小于0,则无实数解
}
```
4. **计算根**:
使用公式 `-b ± sqrt(delta) / (2 * a)` 来计算两个根。这里需要引入数学库 `math.h` 并使用 `sqrt()` 函数。
```c
#include <math.h>
double root1 = (-b + sqrt(delta)) / (2 * a);
double root2 = (-b - sqrt(delta)) / (2 * a);
```
5. **输出结果**:
输出计算得到的两个根。
```c
printf("方程的两个实数根分别为: %.2f 和 %.2f\n", root1, root2);
```
完整的代码片段看起来像这样:
```c
#include <stdio.h>
#include <math.h>
double a, b, c;
int main() {
printf("请输入一元二次方程的系数 a, b, c:\n");
scanf("%lf %lf %lf", &a, &b, &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("方程的两个实数根分别为: %.2f 和 %.2f\n", root1, root2);
} else if (delta == 0) {
// 没有多余的根,这里处理唯一解
} else {
printf("方程无实数解。\n");
}
return 0;
}
阅读全文