如何在C中找出二次方程的根?

问题描述

我对 C 还很陌生,我刚开始接触一些初学者的问题。我在下面写的代码似乎正确,但答案不正确。有谁能帮我算一下吗?

#include<stdlib.h>
#include<stdio.h>
int main() {
    system("cls");
    int a,b,c;
    float x,y,bac,bbac;
    printf("Enter value of a,& c\n");
    scanf("%d %d %d",&a,&b,&c);
    bac = b*b-4*a*c;
    bbac = sqrt(bac);
    
    if (bac<0) {
        printf("The roots are imaginary");
    } else {
        x = (-b+bbac)/2*a;
        y = (-b+bbac)/2*a;
        printf("Roots are %f & %f",x,y);
    }
    return 0;
}

解决方法

您正在为 xy 计算相同的值。其中之一应该有 -b-bbac

x = (-b+bbac)/(2*a);
y = (-b-bbac)/(2*a);