关于ac^2+bx+c=0的方程

麻烦大神帮我看一下是不是我的代码写错了
运行出来的结果总是-4.999…

img

img

题主思路是有的,就是可能没有考虑全面,if后直接else是不对的,因为分三种情况
可看一下下面代码的实现:


#include <stdio.h>
#include <math.h>
int main()
{
    float a,b,c,dis,x1,x2;
    printf("请输入a,b,c的值: ");
    scanf("%f %f %f",&a,&b,&c);
    dis=b*b-4*a*c;
    if(dis<0)
    {
        printf("该函数无实根。\n");
        return 0;
    }
    else if(dis==0)
    {
        x1=x2=(-b)/(a*a);
        printf("该函数有两个相等的实根:\n");
    }
    else 
    {
        x1=(-b+sqrt(dis))/(2*a);
        x2=(-b-sqrt(dis))/(2*a);
        printf("该函数有两个不等的实根:");
    }
    printf("x1=%f x2=%f\n",x1,x2);
    return 0;
}

运行结果:

img


希望对题主有所帮助,望采纳!!