m0_57933475
2021-05-05 20:57
采纳率: 75%
浏览 62

为什么这个c语言一元二次方程根的程序当两实数根时两根为零?

#include<stdio.h>
#include<math.h>
double delta(double,double,double);
int main()
{
    double a,b,c,x1,x2;
    printf("请输入系数a,b,c\n");
    scanf("%lf %lf %lf",&a,&b,&c);
    if(a==0)
    {
        printf("不是一元二次方程");
    }
    else if(delta(a,b,c)<0)
    {
        printf("无实数根");
    }
    else if(delta(a,b,c)==0)
    {
        double x;
        x=-b/2/a;
        printf("两相等根为%lf",&x);
    }
    else if(delta(a,b,c)>0)
    {
        x1=-b/(2*a)+sqrt(delta(a,b,c))/(2*a);
        x2=-b/(2*a)-sqrt(delta(a,b,c))/(2*a);
        printf("两实数根为%lf %lf",&x1,&x2);
    }
    return 0;
}
    double delta(double a,double b,double c)
    {
        double d;
        d=b*b-4*a*c;
        return d;
    }

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

8条回答 默认 最新

  • CSDN专家-Time 2021-05-05 21:06
    最佳回答

    公式没问题,printf有问题,不要带取地址,不要带取地址,不要带取地址。

    评论
    解决 无用
    打赏 举报
查看更多回答(7条)