c语言函数的调用,求二元一次方程组的根

要求编写一个程序,输入系数a,b,c,求一元二次方程ax2+bx+c=0的根,包括主函数和如下子函数:
① 判断a是否为零。
② 计算判别式 。
③ 计算根的情况。
④ 输出根。
请问我这个问题出在哪啊,我这个没有把复根考虑进去

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int zero(double a);
int derta(double a,double b,double c);
int jisuan(double a,double b,double c);
int main()
{
    double a,b,c,r,x1,x2;
    printf("输入二元一次方程组ax^2+bx+c=0的系数a,b,c\n");
    scanf("%lf%lf%lf",&a,&b,&c);
    if(zero(a))
    {
        printf("输入的数a等于0\n");
        exit(0);
    }
    derta(a,b,c);
    if(r>0)
        printf("方程组有两个不同的实数解\n");
    else if(r=0)
        printf("方程组有两个相同的解\n");
    else if(r<0)
    {
        printf("方程组无解\n");
        exit(0);
    }
    jisuan(a,b,c);
    printf("方程组的解为x1=%.3lf,x2=%.3lf",&x1,&x2);
    return 0;
}
int zero(double a)
{
    return(a==0);
}
int derta(double a,double b,double c)
{
    int r;
    r=b*b-4*a*c;
    return(r);
}
int jisuan(double a,double b,double c)
{
    double x1=0,x2=0,y=0;
    x1=(-b+sqrt(b*b-4*a*c))/(2*a);
    x2=(-b-sqrt(b*b-4*a*c))/(2*a);
    return(x1,x2);
}


不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

else if(r=0)
这里,==不是=

return(a==0);
浮点数最好不要直接用==比较因为可能有误差判断不出来

derta(a,b,c);
->
r = derta(a,b,c);

int jisuan。只能返回一个值,不能return(x1,x2)

jisuan(a,b,c);
这里没有用变量接受

printf("方程组的解为x1=%.3lf,x2=%.3lf",&x1,&x2);
这里x1 x2没有值,并且不应该用&符号。