c語言求一元二次方程的根
阿新 • • 發佈:2019-02-05
對於一個一元二次方程進行如下分析:
ax^2+bx+c=0
分析:
1. 當a = 0:
結論:不是一個一元二次方程;
2. 當a!=0:
結論:(1)當b^2-4ac=0,方程有兩個相等的實根,x1=x2=-b/2a;
(2)當b^2-4ac>0,方程有兩個不相等的實根,x1=(-b+√(b^2-4ac))/(2a), x2=(-b-√(b^2-4ac))/(2a);
(3)當b^2- 4ac<0,方程有一組共軛復根;
3.注意事項:
(1)對於方程的根在很多情況下是小數,因此在定義變數時不能用整型,可以用浮點型或者double型;
(2).對於變數與零值進行比較時,不能講浮點變數用“==”或“!=”與任何數字進行比較,可以使用#define 定義一個 精度,在使用時只要在給定的範圍內,將其近似為0;
(3).使用函式sqrt必須引用標頭檔案#include<math.h>。
寫下c語言程式程式碼如下:
#include <stdio.h> #include <math.h> #define EXP 0.00000001 int main() { double a = 0.0; double b = 0.0; double c = 0.0; scanf_s("%lf%lf%lf",&a,&b,&c); if ((a>=-EXP)&&(a<=EXP)) { printf("不是一元二次方程\n"); } else { double disc = b*b-4*a*c; if(( disc >= -EXP)&&( disc <= EXP)) { printf("x = %lf\n",-b/(2*a)); } else if ( disc > 0.0) { printf("x1 = x2 %lf, x2 = %lf\n", (-b+sqrt(disc))/(2*a), (-b-sqrt(disc))/(2*a)); } else { printf("有兩個共軛的復根\n"); } } return 0; }