#include <stdio.h>
#include <math.h>
#define Han 200
#define JUZHEN {1,1,1,1,5},{1,2,-1,4,-2},{2,-3,-1,-5,-2},{3,1,2,11,0}
int main()
{
int i,j,k,m,n,t,cf,hang=4;
float temp;
float AA[Han][Han+1]={JUZHEN};
do{
for(i=0;i<hang;i++)
{
printf("\n");
for(j=0;j<hang+1;j++)
{
printf("%g\t",AA[i][j]);
}
}
printf("\n");
printf("是否自己输入?是:1;否:0");
scanf("%d",&t);
if(t==1)
{
printf("输入未知数的个数");
scanf("%d",&hang);
for(i=0;i<hang;i++)
{
for(j=0;j<hang+1;j++)
{
printf("第%d行第%d列的数为:",i+1,j+1);
printf("j=%d hang=%d\n",j,hang);
scanf("%f",&AA[i][j]);
}
}
}
for(k=0;k<hang;k++)
{
while(AA[k][k]==0)
{
for(m=k+1;m<hang;m++)
for(n=k;n<hang+1;n++){
AA[k][n]+=AA[m][n];
}
}
for(i=k;i<hang;i++)
{
temp=AA[i][k];
for(j=k;j<hang+1;j++)
{
AA[i][j]/=temp;
}
}
for(i=k+1;i<hang;i++)
{
for(j=0;j<hang+1;j++)
{
AA[i][j]-=AA[k][j];
}
}
}
for(k=hang-2;k>=0;k--)
{
for(i=k+1;i<hang+1-1;i++)
{
AA[k][hang+1-1]-=AA[k][i]*AA[i][hang+1-1];
AA[k][i]=0;
}
}
for(i=0;i<hang;i++)
{
printf("\n");
for(j=0;j<hang+1;j++)
{
printf("%g\t",AA[i][j]);
}
}
printf("\n未知数的值为:\n");
for(i=0;i<hang;i++)
{
printf("x(%d)=\t%g\n",i+1,AA[i][hang+1-1]);
}
printf("\n");
printf("是否再试一次?是:1;否:0");
scanf("%d",&cf);
}while(cf==1);
}