對於如下的一元二次方程:
ax*x+bx+c=0
設計C語言程式,輸入一元二次方程的三個係數a、b、c,求解出該方程的兩個根,並且允許使用者在程式中多次輸入不同的係數,以求解不同的一元二次方程的解。
程式設計思路分析:
對於該方程,令delta=b^2-4*a*c,從數學的角度來講,我們需要根據delta的值來判斷該方程的根情況:
當delta>=0時,其兩個根為實數解,分別為(-b+sqrt(delta))/(2*a)和(-b-sqrt(delta))/(2*a);
當delta<0時,其兩個根為複數解,實部皆為-b/(2*a),虛部分別為sqrt(-delta)/(2*a)和-sqrt(-delta)/(2*a)。
其中,sqrt(delta)代表對delta作開根號運算。
在程式碼設計中,可定義一個結構體Complex儲存該方程的根,在該結構體中包括實部和虛部兩個變
在程式中,定義兩個Complex型別的根x1和x2,當delta>=0時,兩個根的虛部為0,否則,分別求解兩個根的虛部值。
具體程式設計如下:
#include "stdio.h"
#include "math.h"
/*求一元二次方程ax*x+bx+c=0的解*/
main()
{float a,b,c,x1,x2,d;
printf("請輸入a:");
scanf("%f",&a);
printf("請輸入b:");
scanf("%f",&b);
printf("請輸入c:");
scanf("%f",&c);
d=b*b-4*a*c;if(d < 0)
printf("方程沒有實數解。\n");
if (d==0){x1=(-b)/(2*a);
printf("x1=%f\n",x1);}
if (d>0){x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("x1=%f,x2=%f\n",x1,x2);} }
請輸入a:12
請輸入b:34
請輸入c:4
x1=-0.122985,x2=-2.710348
Press any key to continue
對於如下的一元二次方程:
ax*x+bx+c=0
設計C語言程式,輸入一元二次方程的三個係數a、b、c,求解出該方程的兩個根,並且允許使用者在程式中多次輸入不同的係數,以求解不同的一元二次方程的解。
程式設計思路分析:
對於該方程,令delta=b^2-4*a*c,從數學的角度來講,我們需要根據delta的值來判斷該方程的根情況:
當delta>=0時,其兩個根為實數解,分別為(-b+sqrt(delta))/(2*a)和(-b-sqrt(delta))/(2*a);
當delta<0時,其兩個根為複數解,實部皆為-b/(2*a),虛部分別為sqrt(-delta)/(2*a)和-sqrt(-delta)/(2*a)。
其中,sqrt(delta)代表對delta作開根號運算。
在程式碼設計中,可定義一個結構體Complex儲存該方程的根,在該結構體中包括實部和虛部兩個變
在程式中,定義兩個Complex型別的根x1和x2,當delta>=0時,兩個根的虛部為0,否則,分別求解兩個根的虛部值。
具體程式設計如下:
#include "stdio.h"
#include "math.h"
/*求一元二次方程ax*x+bx+c=0的解*/
main()
{float a,b,c,x1,x2,d;
printf("請輸入a:");
scanf("%f",&a);
printf("請輸入b:");
scanf("%f",&b);
printf("請輸入c:");
scanf("%f",&c);
d=b*b-4*a*c;if(d < 0)
printf("方程沒有實數解。\n");
if (d==0){x1=(-b)/(2*a);
printf("x1=%f\n",x1);}
if (d>0){x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("x1=%f,x2=%f\n",x1,x2);} }
請輸入a:12
請輸入b:34
請輸入c:4
x1=-0.122985,x2=-2.710348
Press any key to continue