c语言编程怎么求一元二次方程

时间:2025-01-25 16:29:07 游戏攻略

在C语言中,求解一元二次方程 \( ax^2 + bx + c = 0 \) 的步骤如下:

输入系数 :首先,用户需要输入三个系数 \( a \), \( b \), 和 \( c \)。

计算判别式:

计算判别式 \( \Delta = b^2 - 4ac \)。

判断解的情况

如果 \( \Delta > 0 \),方程有两个不相等的实数根。

如果 \( \Delta = 0 \),方程有两个相等的实数根(一个重根)。

如果 \( \Delta < 0 \),方程没有实数根,但有两个共轭复数根。

计算根

如果 \( \Delta \geq 0 \),使用公式 \( x = \frac{-b \pm \sqrt{\Delta}}{2a} \) 计算两个根。

如果 \( \Delta < 0 \),计算两个复数根 \( x_1 = \frac{-b + i\sqrt{-\Delta}}{2a} \) 和 \( x_2 = \frac{-b - i\sqrt{-\Delta}}{2a} \),其中 \( i \) 是虚数单位。

```c

include

include

void Cal(double a, double b, double c) {

double disc = b * b - 4 * a * c;

if (disc < 0) {

printf("该方程没有实数根\n");

} else {

double p = -b / (2.0 * a);

double q = sqrt(disc) / (2.0 * a);

double x1 = p + q;

double x2 = p - q;

printf("x1的值是 %lf\n", x1);

printf("x2的值是 %lf\n", x2);

}

}

int main() {

double a, b, c;

printf("请输入三个参数:\n");

scanf("%lf %lf %lf", &a, &b, &c);

Cal(a, b, c);

return 0;

}

```

代码解释:

输入部分

使用 `scanf` 函数从用户那里获取三个系数 \( a \), \( b \), 和 \( c \)。

计算判别式

计算 \( \Delta = b^2 - 4ac \)。

判断解的情况

如果 \( \Delta < 0 \),输出“该方程没有实数根”。

否则,计算两个根 \( x_1 \) 和 \( x_2 \) 并输出。

使用示例:

1. 编译程序:

```sh

gcc -o quadratic quadratic.c

```

2. 运行程序:

```sh

./quadratic

```

3. 输入三个系数,例如:

```

请输入三个参数:

1 -3 2

```

4. 程序将输出方程的根:

```

x1的值是 2.000000

x2的值是 -1.000000

```

这个程序可以处理实数系数的一元二次方程,并且能够正确计算出方程的根(包括重根和复数根)。