小米电视3d:C语言求二次方程解编程问题

来源:百度文库 编辑:神马品牌网 时间:2024/04/28 13:34:35
谭浩强《C程序设计(第三版)》P108 例 5.6:
求ax^2+bx+c=0方程的解。
编写程序如下:
#include<stdio.h>
#include<math.h>
void main()
{
float a,b,c,x1,x2,disc,realpart,imagpart;
scanf("%f,%f,%f",&a,&b,&c);
printf("The equation");
if(fabs(a)<=1e-6)
printf("is not a quadratic");
……
……
……
}
我只打了前部分程序代码,其中的if(fabs(a)<=1e-6)是我不明白的地方,
这句是根据a值确定是不是二次方程,为什么不用if(a==0)??请教各位的高见!!谭老师(本书作者)用的这句具体意思是什么呢,fabs又是什么函数?希望能有个具体的回答!~
现将全部程序补充如下:
#include<stdio.h>
#include<math.h>
void main()
{
float a,b,c,x1,x2,disc,realpart,imagpart;
printf("The equation");
if(fabs(a)<=1e-6)
printf("is not a quadratic\n");
else
{
disc=b*b-4*a*c;
if(fabs(disc)<=1e-6)
printf("has two equal roots:%8.4f\n",-b/(2*a));
else
if(disc>1e-6)
{
x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc)) /(2*a);
printf("has discinct real roots:%8.4f and %8.4f\n",x1,x2);
}
else
{
realpart=-b/(2*a);
imagpart=sqrt(-disc)/(2*a);
printf(" has complex roots:\n");
printf("%8.4f+%8.4fi\n",realpart,imagpart);
printf("%8.4f-%8.4fi\n",realpart,imagpart);
}
}
}

书上不是写得明白得很的吗
是不是没有仔细看书