剑灵主线任务第八幕:高斯列主元素消去法编程

来源:百度文库 编辑:高考问答 时间:2024/05/08 11:01:25
#include<stdio.h>
#include<math.h>
float a[20][20],b[20],det;
input(int n)
{
int i,j;
printf("请输入系数矩阵:\n");
for(i=0;i<=n-1;i++)
{for(j=0;j<=n-1;j++)
scanf("%f",a[i][j]);
printf("\n");}
printf("请输入方程结果矩阵:\n");
for(i=0;i<=n-1;i++)
scanf("%f",b[i]);
}

doing(int n){
int g,h,k,l;
float t,p,det,max,m[20][20];
for(h=0;h<=n-1;h++)
{ max=abs(a[h][h]);
for(g=h;g<=n-1;g++)
if(max<abs(a[g+1][h]))max=a[g+1][h];
if(max=0){printf("Error\n");break;}
else
{for(k=0;k<=n-1;k++)
{t=a[h][k];a[h][k]=a[g+1][k];a[g+1][k]=t;
p=b[h];b[h]=b[g+1];b[g+1]=p;}
det=-det;
}
for(l=0;l<=n-1;l++)
{m[g+1][h]=a[g+1][h]/a[h][h];
a[g+1][l]=a[g+1][l]-m[g+1][h]*a[h][l];
b[g+1]=b[g+1]-m[g+1][h]*b[h];
}
det=a[h][h]*det;
}
printf("det=%f\n",det);
}

donewell(int n){
int s,t,r;
b[n-1]=b[n-1]/a[n-1][n-1];
for(s=n-2;s>=0;s--)
for(t=s+1;t<=n-1;t++)
b[s]=(b[s]-a[s][t]*b[t])/a[s][s];
for(r=0;r<=n-1;r++)
printf("X[r]=%f\n",b[r]);
}

main(){
int n;
printf("请输入方程个数(n<=20)?:");
scanf("%d",&n);
input(n);
doing(n);
donewell(n);
}
请指出其中的错误,并帮忙改正

程序写的太乱,还是再重新写一遍吧....

ooooo!@#$%^&*()_+":?><

vb