- 论坛徽章:
- 0
|
请教一个C言问题---列主元消去法
代码对齐后结果
:没有修改
检查一下逻辑
#include <math.h>;
#include <stdio.h>;
main()
{
float a[20][21],t,max;
int i,j,k,M,n;
FILE *in,*out;
in=fopen("shuju","r" ;
out=fopen("jieguo","w" ;
if(in==NULL||out==NULL)
{
printf("\nfile open or write error\n" ;
exit(0);
fscanf(in,"%d",&M);
for(i=0;i<M;i++)
for(j=0;j<=M;j++)
fscanf(in,"%f",&a[j]);
for(k=0;k<M-1;k++)
{
max=fabs(a[k][k]);
n=k;
for(i=k+1;i<M;i++)
if(fabs(a[k])>;max)
{max=fabs(a[k]);
n=i;
}
if(n!=k)
for(j=0;j<=M;j++)
{t=a[k][j];a[k][j]=a[n][j];a[n][j]=t;}
for(i=k+1;i<M;i++)
for(j=0;j<=M;j++)
a[j]=a[j]-a[k][j]*a[k]/a[k][k];
}
for(i=M-1;i>;=0;i--)
for(j=i-1;j>;=0;j--)
for(k=M;k>;=0;k--)
a[j][k]=a[j][k]-a[k]*a[j]/a;
for(i=0;i<M;i++)
{
fprintf(out,"\nx%d=%f\n",i+1,a[M]/a);
printf("\nx%d=%f\n",i+1,a[M]/a);
}
fclose(in);
fclose(out);
}
}
另外代码写整齐会好一点 |
|