初学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,那不就是可以继续往进行计算了? 展开
求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,那不就是可以继续往进行计算了? 展开
3个回答
展开全部
(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 );。
(2): fabs()是求浮点数绝对值的函数,是被定义在math.h这个头文件里的,还有abs()是求整数绝对值的
(3): a是实参,在用的时候,a被传入fabs()这个函数,然后经过运算,由fabs()返回函数值,也就是a的绝对值,fasb(a)这个表达式的值就是a的绝对值
(4): 是的,直到小于0.000001他才会停止运行
PS: fabs()在VC6中的原型:double fabs( double x );。
展开全部
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.当然可以了。
2,fasb()是math.h头文件里的函数,你直接用就可以了,就如scanf你也没有定义,但由于包含在stdio.h里,你就可以直接用。
3。fasb(a)就是求浮点数a的绝对值
4.当然可以了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
原因 1: 浮点数存储是不规则的,也就是近似存储,而1e-6近似与数学当中的0
2: fasb是数学函数,它的定义在头文件math.h中已经申明
3: fasb(a)就是求浮点数a的绝对值
4. 同1的原因
2: fasb是数学函数,它的定义在头文件math.h中已经申明
3: fasb(a)就是求浮点数a的绝对值
4. 同1的原因
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询