code:
const int N=110;
const double eps=1e-7;int n;
double a[N][N];inline bool zero(double x){return fabs(x)<eps;
}int gauss(){for(int i=1;i<=n;i++){int aim=i;//找出 i 列中,未确定主元的行中的最大行for(int j=1;j<=n;j++){//判断是否确定主元if(j<i&&!zero(a[j][j]))continue;if(fabs(a[j][i])>fabs(a[aim][i]))aim=j;}if(zero(a[aim][i]))continue;//交换aim行和i行for(int j=1;j<=n+1;j++)swap(a[aim][j],a[i][j]);//a[i][i] 位置置为1for(int j=n+1;j>=i;j--)a[i][j]/=a[i][i];for(int j=1;j<=n;j++){//第i列出来第i行,全部消为0if(j==i)continue;double t=a[j][i]/a[i][i];for(int k=i;k<=n+1;k++)a[j][k]-=a[i][k]*t;}}//判断解int ret=1;for(int i=1;i<=n;i++){if(zero(a[i][i])&&!zero(a[i][n+1])){ret=0;break;}if(zero(a[i][i]))ret=2;}return ret;
}