#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define N 4
#define EPS 1e-10
void main()
{
int A[N][N+1]={{5,2,3,2,-1},{2,4,1,-2,5},{1,-3,4,3,4},{3,2,2,8,-6}},x[N];
int i,j,k,Pr,t,total;
for(k=1;k<N;k++)
{
Pr=k-1;
for(i=k;i<N;i++)
{
if(abs(A[i][k-1])>abs(A[Pr][k-1]))
{
Pr=i;
}
}//End For i
if(abs(A[i][k-1])<EPS)
{
printf("主元接近于0,方法失效/n");
exit(0);
}
if(Pr>k-1)
{
for(j=k-1;j<N+1;j++)
{
t=A[k-1][j];
A[k-1][j]=A[Pr][j];
A[Pr][j]=t;
}//End For j
} //End if
for(i=k;i<N;i++)
{
t=A[i][k-1]/A[k-1][k-1];
for(j=k-1;j<N+1;j++)
{
A[i][j]=A[i][j]-t*A[k-1][j];
} //End For j
} //End For i
} //End For k
if(abs(A[N-1][N-1])<EPS)
{
printf("主元接近于0,方法失效/n");
exit(0);
} //End If
x[N-1]=A[N-1][N]/A[N-1][N-1];
for(i=N-2;i>=0;i--)
{
total=A[i][N];
for(j=N-1;j>=i+1;j--)
{
total-=A[i][j]*x[j];
}
x[i]=total/A[i][i];
}//End For i
for(i=0;i<N;i++)
{
printf("/n/tx[%d]=%d/n",(i+1),x[i]);
}//End For i
}