-
1 # _少錵訫_
-
2 # 路人做自己
下面是用C語言求解一元二次方程ax2+bx+c=的根的代碼:
```c
#include <stdio.h>
#include <math.h>
int main()
{
float a, b, c, disc, x1, x2, realpart, imagpart;
printf("Input a, b, c: ");
scanf("%f%f%f", &a, &b, &c);
disc = b*b - 4*a*c;
if (disc > ) { // 有兩個實數根
x1 = (-b + sqrt(disc)) / (2*a);
x2 = (-b - sqrt(disc)) / (2*a);
printf("Two real roots: x1 = %.2f, x2 = %.2f
", x1, x2);
}
else if (disc == ) { // 有一個實數根
x1 = (-b) / (2*a);
printf("One real root: x = %.2f
", x1);
}
else { // 有兩個虛數根
realpart = (-b) / (2*a);
imagpart = sqrt(-disc) / (2*a);
printf("Two complex roots: x1 = %.2f + %.2fi, x2 = %.2f - %.2fi
", realpart, imagpart, realpart, imagpart);
}
return ;
}
```
在代碼中,通過 `scanf` 函數依次輸入方程中的係數 `a`、`b`、`c` 的值,然後計算出判別式 `disc`,並根據其值進行分類討論:
- 當 `disc > ` 時,方程有兩個不等實數根,分別為 $x_1=\frac{-b+\sqrt{b^2-4ac}}{2a}$ 和 $x_2=\frac{-b-\sqrt{b^2-4ac}}{2a}$。
- 當 `disc = ` 時,方程有一個實數重根,為 $x=\frac{-b}{2a}$。
- 當 `disc < ` 時,方程有兩個虛數根,分別為 $x_1=\frac{-b+\sqrt{4ac-b^2}}{2a}+\frac{\sqrt{4ac-b^2}}{2a}i$ 和 $x_2=\frac{-b-\sqrt{4ac-b^2}}{2a}-\frac{\sqrt{4ac-b^2}}{2a}i$。
最後,根據不同情況輸出方程的根的值。
回覆列表
解題步驟,第一步,方程兩邊都除以a,得x的平方+(b/a)x+c/a=0,第二步,配方,得,x的平方+(b/a)x+(b/2a)的平方=-c+(b/2a)的平方,即(x+b/2a)的平方=b的平方-4ac,第三步,開方得,x+b/2a=±✔b的平方-4ac,第四步,移項,x=-b±✔b的平方-4ac/2a,得到一元二次方程的兩個根