刘涛 发表于 2013-3-8 13:35:44

教材上的问题 各位大神帮忙解答一下

这是一个一元二次方程解法的C语言程序



#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(fabs(a)<=1e-6)
                printf("is not a quadratic");
        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 distinct 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);
                        }
        }
       
       
}



问一下 如果要跳到第三个else然后执行下面的程序,那么要满足的条件是什么 ?上面不是只有fabs(disc)<=1e-6和fabs(disc)>1e-6两种情况吗?第三种情况是什么?

亚洲猴王 发表于 2013-3-8 14:10:40

第三种情况应该是(disc)<-1e-6

小新110 发表于 2013-3-8 14:58:51

1、如果fabs(a) > 1e-6
那么进入第一个else
2、如果 fabs(disc) > 1e-6
那么进入第二个else
3、如果 disk <= 1e-6
那么进入第三个else

刘涛 发表于 2013-3-8 18:43:07

小新110 发表于 2013-3-8 14:58 static/image/common/back.gif
1、如果fabs(a) > 1e-6
那么进入第一个else
2、如果 fabs(disc) > 1e-6


谢谢{:5_109:}

刘涛 发表于 2013-3-8 18:43:40

亚洲猴王 发表于 2013-3-8 14:10 static/image/common/back.gif
第三种情况应该是(disc)

多谢{:5_95:}

小小小菜菜菜 发表于 2018-12-20 19:39:04


第三种情况应该是(disc)<-1e-6

1809228982 发表于 2018-12-21 11:03:56

帮你顶贴

X用户 发表于 2018-12-21 16:48:48

哈???

扩展阅读 发表于 2018-12-24 11:51:21

进来学习学习

心驰神往 发表于 2020-11-4 10:06:44

顶上去
页: [1]
查看完整版本: 教材上的问题 各位大神帮忙解答一下