float A[3][3]={{0.10,0.07,-0.06},
{0.07,0.05,-0.03},
{-0.06,-0.03,0.06}} ; //三元壹次方程組的系數矩陣
float B[3]={-0.05,-0.04,0.02}; //三元壹次方程組的常數項
float X[3]; //三元壹次方程組的解:X1=-0.750,X2=0.000,X3=-0.417
float DETA ( ) //行列式計算
{
return (A[0][0]*A[1][1]*A[2][2]+A[1][0]*A[2][1]*A[0][2]+A[2][0]*A[0]
[1]*A[1][2]
-A[2][0]*A[1][1]*A[0][2]-A[0][0]*A[2][1]*A[1][2]-A[1][0]*A[0][1]*A
[2][2]);
}
void swap (int k)//常數項與k列系數交換
{
int i;
float t;
for (i=0;i<3;i++) {
t=B[i];
B[i]=A[i][k];
A[i][k]=t;
}
}
void XYZ ( ) //求解三元壹次方程組
{
float d;
d=DETA( ); //求系數行列式的值
swap (0) ; //將x1的系數與常數項交換
X[0]=DETA()/d; //解出x1
swap (0) ; //恢復原來的系數與常數項
swap (1) ; //將x2的系數與常數項交換
X[1]=DETA()/d; //解出x2
swap (1) ; //恢復原來的系數與常數項
swap (2) ; //將x3的系數與常數項交換
X[2]=DETA()/d; //解出x3
swap (2) ; //恢復原來的系數與常數項
}
void main()
{
int i;
XYZ () ;
for (i=0;i<3;i++)
printf("%.3f\n",X[i]);
}