例子5.6 求一般方程的解

来源:互联网 发布:淘宝云客服网址 编辑:程序博客网 时间:2024/06/11 20:11

#include <stdio.h>
#include <math.h>
main()
{
    float b,a,c,disc,x1,x2,p,q;
    scanf("%f%f%f",&a,&b,&c);
    disc =b*b-4*a*c;
    if(fabs(a)<=1e-6)
    printf("不是二次方程");

    else

    if(disc>1e-6)
    {
    x1=(-b+sqrt(disc))/(2*a);
     x2=(-b-sqrt(disc))/(2*a);
    printf("%8.4fand%8.4f",x1,x2);
    }
    else
    if(fabs(disc)<=1e-6)
    printf("有两个相等的实根%8.4f",-b/(2*a));
    else
    {p=-b/(2*a);
    q=sqrt(-disc)/(2*a);
    printf("%8.4f+%8.4fi/n",p,q);
      printf("%8.4f-%8.4fi/n",p,q);
    }
}

1。disc是=赋值,不是=,搞这个东西搞了两个小时

2.有就是fabs是不是小于一个很小的数(例如1e-6) 1e的1不要忘记

3.数在计算和存储时会有一些微小的误差,因此不能直接判断

因为这样可能会出现本来是零的值不等于0

4。学东西不能模棱两可,就一个fabs搞得我又用了半小时还是问别人问来的

原创粉丝点击