#include<stdio.h>
#include<math.h>
#define MAX 3
void input(double a[MAX][MAX+1],long n);
void output(double x[MAX],long n);
int main(){
double a[MAX][MAX+1],x[MAX],s,max,t;
long n,i,j,k,maxi;printf("請(qǐng)輸入方程組階數(shù)\n");
scanf("%ld",&n);input(a,n);
for(k=0;k<=n-2;k++){
max=a[k][k];maxi=k;
for(i=k+1;i<=n-1;i++)
if(fabs(a[i][k])>fabs(max))
{max=a[i][k];maxi=i;}
if(max==0) break;
if(max!=k)
for(j=k;j<=n;j++)
{t=a[k][j];a[k][j]=a[maxi][j];a[maxi][j]=t;}
for(i=k+1;i<=n-1;i++){
a[i][k]/=-a[k][k];
for(j=k+1;j<=n;j++)
a[i][j]+=a[i][k]*a[k][j];
}
}
if(max==0) printf("無解。");
else{
for(k=n-1;k>=0;k--){
s=0;
for(j=k+1;j<=n-1;j++) s+=a[k][j]*x[j];
x[k]=(a[k][n]-s)/a[k][k];
}
output(x,n);
}
return 0;
}
void input(double a[MAX][MAX+1],long n){
long i,j;
printf("請(qǐng)輸入增廣矩陣:\n");
for(i=1;i<=n;i++)
for(j=1;j<=n+1;j++)
scanf("%lf",&a[i-1][j-1]);
}
void output(double x[MAX],long n){
long k;printf("原方程的解為:\n");
for(k=1;k<=n;k++)
printf(" %lf",x[k-1]);
}