#include
#include
void main()
{
float a,b,c;
double m;
double x1,x2;
printf("please insert a,b,c:");
scanf("%f,%f,%f",&a,&b,&c);
m=b*b-4*a*c;
if (m<0)
printf("the number is wrong,please insert again:");
else
x1=(-b+sqrt(m))/2*a;
x2=(-b-sqrt(m))/2*a;
printf("the answer is : %f,%f",x1,x2);
printf("\n");
}
1.用“FLOATZERO” 代替“le-6 ”,下面的代码中出现“FLOATZERO”,其值都是“le-6”的意思
2.realpart=-b/(2*a);
imagpart=sqrt(-disc)/(2*a);
都是赋值语句。
3.if(fabs(a)<=FLOATZERO)
如果 a 的绝对值小于 FLOATZERO,也即小于 le-6
后面的以此类推....
还有,le-6 你要改为1e-6,因为你写的是“l”,其实是 “1 ”哦,是一个数字,float 改为double吧
#define FLOATZERO le-6:定义宏变量,也就是下面出现FlOATZERO,其值都是1e-6;
realpart=-b/(2*a):求复根的实部;
imagpart=sqrt(-disc)/(2*a);:求复根的虚部;
if(fabs(a)<=FLOATZERO:括号里面的表达式可以理解为a=0;
if(fabs(disc)<=FLOATZERO):括号里面的表达式可以理解为disc=0;
if(disc>FLOATZERO):括号里面的表达式可以理解为disc>0。
这个题目,谭浩强的书上讲解得非常清楚,建议你好好看看教材.
#define FLOATZERO le-6
定义一个符号常量,值为10^(-6)
realpart实部,imagpart虚部
abs绝对值disc是一元二次方程的判别式
没有什么大问题就是#define FLOATZERO le-6 其中的le-6 中的"l"换成数字1就OK了