1. 程式人生 > 其它 >求方程的根

求方程的根

技術標籤:筆記c語言

#include<stdio.h>
#include<math.h> 
int main(){
	float a,b,c,disc,realpart,imagepart,x1,x2;
	printf("請輸入方程"); 
	scanf("%f %f %f",&a,&b,&c);
	if(fabs(a)<=1e-6){
		printf("非二次方程");
	}else 
	disc=b*b-4*a*c;
	if(fabs(disc)<=1e-6)
{ printf("方程有兩個相同的實根:%8.4f\n",-b/(2*a)); }else if(disc>0){ x1=(-b+sqrt(disc))/(2*a); x2=(-b-sqrt(disc))/(2*a); printf("方程有兩個不一樣的實根:%8.4f %8.4f\n",x1,x2); }else{ realpart=-b/(2*a); imagepart=sqrt(-disc)/(2*a); printf("方程為復根: %8.4f + %8.4fi\n",realpart,imagepart)
; printf("方程為復根: %8.4f - %8.4fi\n",realpart,imagepart); } }

此處為了避免由計算引起的誤差,判斷一個數是否為0的時候:先取這個數的絕對值,然後判斷其絕對值是否小於1乘以10的-6次方,取絕對值fabs(),使用前注意匯入<math.dio>。
此外要注意1乘以10的-6次方的表示方式:1e-6。
最後,在寫計算的表示式的時候一定要注意把括號加上,以避免產生計算上的先後次序導致的誤差。