初学C语言,求二次方程根,求指导。

在书上看到例题的介绍,有几处不太明白,放上来希望大家多多指导。求ax^2+bc+c=0的方程根有以下四种可能:(1)a=0不是方程根(2)b^2-4ac=0,有两个相等实... 在书上看到例题的介绍,有几处不太明白,放上来希望大家多多指导。
求ax^2+bc+c=0的方程根
有以下四种可能:
(1)a=0不是方程根
(2)b^2-4ac=0,有两个相等实数根。
(3)b^2-4ac>0,有两个不等实数根。
(4)b^2-4ac<0,有两个共轭复根。

编写程序如下
#include<stdio.h>
#include<math.h>
void main()
{
float a,b,c,disc,x1,x2,realpart,imagpart;
scanf("%f,%f,%f",&a,&b,&c);
printf("The equation");
if((fasb(a)<=1e-6);
printf("is not a quadratic\n");
else
以下省略。。。

我的问题就是。
(1)第一个if(fasb(a))<1e-6,就是判断它是否为0,如果为0就打印“不是方程根”,为什么要用这种方式来判断?为何不直接用if(a<=0);
(2)这个fasb是多哪冒出来的?在float中都没有定义它。
(3)而当它以(fasb(a))这种形式出现的时候代表什么意思?
(4)而且1e-6不就是0.000001吗,如果a=0.1就大于了0.000001,那不就是可以继续往进行计算了?
展开
 我来答
波比克聊科技
2011-09-27 · TA获得超过258个赞
知道小有建树答主
回答量:210
采纳率:0%
帮助的人:137万
展开全部
(1): 浮点数存储在内存中是不规则的比如14.6在内存中储存的就是14.599999,也就是近似存储在内存中的,而1e-6就几乎是0,如果你填0是不太容易得到结果的
(2): fabs()是求浮点数绝对值的函数,是被定义在math.h这个头文件里的,还有abs()是求整数绝对值的
(3): a是实参,在用的时候,a被传入fabs()这个函数,然后经过运算,由fabs()返回函数值,也就是a的绝对值,fasb(a)这个表达式的值就是a的绝对值
(4): 是的,直到小于0.000001他才会停止运行

PS: fabs()在VC6中的原型:double fabs( double x );。
lieren2174
2011-09-27 · TA获得超过278个赞
知道小有建树答主
回答量:380
采纳率:0%
帮助的人:355万
展开全部
1:因为0<=fasb(a)<=1e-6时,由于后面数据不在精度范围内,没有存储,只存六位,存储时已经为0了。如果直接写0,如果数值处于0<=fasb(a)<=1e-6时,没有当成0处理,而计算时却为0,刚会出错。
2,fasb()是math.h头文件里的函数,你直接用就可以了,就如scanf你也没有定义,但由于包含在stdio.h里,你就可以直接用。
3。fasb(a)就是求浮点数a的绝对值
4.当然可以了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qianfahui
2011-09-27 · 超过14用户采纳过TA的回答
知道答主
回答量:45
采纳率:0%
帮助的人:37.6万
展开全部
原因 1: 浮点数存储是不规则的,也就是近似存储,而1e-6近似与数学当中的0
2: fasb是数学函数,它的定义在头文件math.h中已经申明
3: fasb(a)就是求浮点数a的绝对值
4. 同1的原因
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式