附录1
#pragma warning(disable:4996)
#include <cstdio>
#include <cmath>#define MAXN 100
#define zero(x) (fabs(x)<1e-10)struct mat{int n, m;double data[MAXN][MAXN];
};
double det(const mat &a){int i, j, k, sign = 0;double b[MAXN][MAXN], ret = 1, t;if (a.n != a.m) return 0;for (i = 0; i<a.n; i++)for (j = 0; j<a.m; j++)b[i][j] = a.data[i][j];for (i = 0; i<a.n; i++){//行标+列标if (zero(b[i][i])){for (j = i + 1; j<a.n; j++)//行标if (!zero(b[j][i]))break;if (j == a.n) return 0;for (k = i; k<a.n; k++)//列标t = b[i][k], b[i][k] = b[j][k], b[j][k] = t;sign++;}ret *= b[i][i];for (k = i + 1; k<a.n; k++)//列标b[i][k] /= b[i][i];for (j = i + 1; j<a.n; j++)//行标for (k = i + 1; k<a.n; k++)//列标b[j][k] -= b[j][i] * b[i][k];}if (sign & 1) ret = -ret;return ret;
}
int main(){mat a;int i, j, n;while (scanf("%d", &n), n){a.n = a.m = n;for (i = 0; i<n; i++)for (j = 0; j<n; j++)scanf("%lf", &a.data[i][j]);printf("det a : %.2lf\n", det(a));}return 0;
}