高斯消去法

#include<stdio.h>
#define N 20
int main()
{
float A[N][N];
float b[N];
float x[N];
int n;
int i,j,k;
printf("请输入级数:\n");
scanf("%d",&n);
printf("\n");
printf("请输入方程系数矩阵:\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%f",&A[i][j]);
}
}
printf("\n");
printf("请输入等号右式,以空格键隔开:\n");
for(i=0;i<n;i++)
{
scanf("%f",&b[i]);
}
printf("\n");
printf("增广矩阵\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%10f ",A[i][j]);
}
printf("%10f\n",b[i]);
}
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(A[i][i]==0)
return -1;
else
{
float temp;
temp=A[j][i]/A[i][i];
for(k=0;k<n;k++)
{
A[j][k]=A[j][k]-temp*A[i][k];
}
b[j]=b[j]-temp*b[i];
}
}
}
printf("\n");
printf("上三角矩阵\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%10f ",A[i][j]);
}
printf("%10f\n",b[i]);
}
for(i=n-1;i>=0;i--)
{
for(j=i+1;j<n;j++)
{
if(A[n-1][n-1]==0)
return -1;
else
b[i]=b[i]-A[i][j]*x[j];
}
x[i]=b[i]/A[i][i];
}
printf("\n");
printf("方程组的解为:\n");
for(i=0;i<n;i++)
printf("x%d = %.3f\n",i,x[i]);
return 0;
}