解3元线性方程组,为什么输出结果总是nan或者0(有什么其他问题可以随便提出来,xie)


#include<stdio.h>
#include<math.h>
int main()
{
    int a,b,c,d,e,f,g,h,i,j,k,l;
    scanf("%d %d %d %d",&a,&b,&c,&d);
    scanf("%d %d %d %d",&e,&f,&g,&h);
    scanf("%d %d %d %d",&i,&j,&k,&l);
    
    double D=0;
    double E=0;
    double F=0;
    double G=0;
                    
    D=sqrt((a*f*k)+(b*g*i)+(c*e*j)-(c*f*i)-(b*e*k)-(g*j*a));
    E=sqrt((d*f*k)+(b*j*l)+(h*j*c)-(c*f*l)-(g*j*d)-(k*b*h));
    F=sqrt((a*h*k)+(d*g*i)+(c*e*l)-(c*h*i)-(g*l*a)-(d*e*k));
    G=sqrt((a*f*l)+(b*h*i)+(e*j*d)-(d*f*i)-(e*b*l)-(a*h*j));
    
    printf("x1=%lf\n",E/D);
    printf("x2=%lf\n",F/D);
    printf("x3=%lf\n",G/D);
    
    return 0;

给出你的例子,有可能行列式等于零了,即方程非满秩。