#include <math.h> main() { float a,b,c,disc,x1,x2,realpart,imgpart; scanf("a=%f,b=%f,c=%f",&a,&b,&c); disc=b*b-4*a*c; if (fabs(a)<=1e-6) printf("please check a,a!=0\n"); else { if (fabs(disc)<=1e-6) { x1=x2=-b/(2*a); printf("%8.4f,%8.4f\n",x1,x2); } else if (disc>1e-6) { 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); imgpart=sqrt(-disc)/(2*a); printf("x1=%8.4f+%8.4fi\n",realpart,imgpart); printf("x2=%8.4f-%8.4fi\n",realpart,imgpart); } } } I 做的时候,一是0的问题:因为实数在计算和存储过程中存在误差,所以呢用一个很小的数来代替他比如1e-6,来代替零,这是我学到的一点东西,出现的错误都是很小的,比如IF后面忘记带括号拉,“==”写成“=”拉,但是这些也不是小问题所以再以后写的时候一定注意!!

评论