#include<iostream> #include<math.h> using namespace std; double a[100][100]; int n; void gaosi() { int i,j,k,r; for(i=0;i<n;i++) { r=i; for(j=i+1;j<n;j++) if(fabs(a[j][i])>fabs(a[r][i])) r=i; for(j=i;j<=n;j++) { double w; w=a[i][j];a[i][j]=a[r][j];a[r][j]=w; } for(j=i+1;j<=n;j++) { double f; f=a[j][i]/a[i][i]; for(k=i;k<=n;k++) a[j][k]-=f*a[i][k]; } } for(i=n-1;i>=0;i--) { for(k=i+1;k<n;k++) a[i][n]-=(a[i][k]*a[k][n]); a[i][n]/=a[i][i]; } } int main() { int i,j,k; scanf("%d",&n); for(i=0;i<n;i++) for(j=0;j<n;j++) scanf("%lf",&a[i][j]); for(i=0;i<n;i++) scanf("%lf",&a[i][n]); gaosi(); for(i=0;i<n;i++) printf("x%d: %g\n ",i+1,a[i][n]); return 0; }
这段代码求的是 线性方程组 比如说
2x+y-z=8
-3x-y+2z=-11
-2x+y+2z=3
求 x y z
先输入有多少个未知数n 再有n行 输入每个未知数前的系数 系数为0 的 就输入0
最后一行输入 每个方程的 最右边是常数
实际上就是 不断的加减消元。。