​传送门​

高斯消元模板

#include<bits/stdc++.h>
#define N 150
using namespace std;
double a[N][N]; int n;
void gauss(){
for(int i=1;i<=n;i++){
for(int j=i;j<=n;j++)
if(fabs(a[j][i])>1e-8)
for(int k=1;k<=n+1;k++) swap(a[i][k],a[j][k]);
if(fabs(a[i][i])<1e-8 && fabs(a[i][n+1])>1e-8){printf("-1"); return;}
if(fabs(a[i][i])<1e-8 && fabs(a[i][n+1])<1e-8){printf("0"); return;}
for(int j=1;j<=n;j++){
if(i==j) continue;
double now = a[j][i] / a[i][i];
for(int k=1;k<=n+1;k++) a[j][k] -= a[i][k] * now;
}
}
for(int i=1;i<=n;i++) printf("x%d=%0.2lf\n",i,a[i][n+1]/a[i][i]);
}
int main(){
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n+1;j++)
scanf("%lf",&a[i][j]);
gauss(); return 0;
}