#include<iostream>
#include<cmath>
#define N 20
using namespace std;
void load();
float a[N][N];
int m;
int main(){
int i,j;
int c,k,n,p,r;
float x[N],l[N][N],s,d;
cout<<"下面请输入未知数的个数 m=";
cin>>m;
cout<<endl;
cout<<"请按顺序输入增广矩阵 a:"<<endl;
load();
for(i=0;i<m;i++)
{
for(j=i;j<m;j++)
c=(fabs(a[j][i])>fabs(a[i][i]))?j:i; /*找列最大元素*/
for(n=0;n<m+1;n++)
{s=a[i][n]; a[i][n]=a[c][n]; a[c][n]=s;} /*将列最大数防在对角线上*/
for(p=0;p<m+1;p++)
cout<<a[i][p]<<" ";
cout<<endl;
for(k=i+1;k<m;k++)
{
l[k][i]=a[k][i]/a[i][i];
for(r=i;r<m+1;r++) /*化成三角阵*/
a[k][r]=a[k][r]-l[k][i]*a[i][r];
}
}
x[m-1]=a[m-1][m]/a[m-1][m-1];
for(i=m-2;i>=0;i--)
{
d=0;
for(j=i+1;j<m;j++)
d=d+a[i][j]*x[j];
x[i]=(a[i][m]-d)/a[i][i]; /*求解*/
}
cout<<"该方程组的解为:"<<endl;
for(i=0;i<m;i++)
cout<<"x["<<i<<"]="<<x[i]<<" ";
//system("pause");