void solve(float l[][100],float u[][100],float b[],float x[],int n) {int i,j;
float t,s1,s2; float y[100];
for(i=1;i<=n;i++) /* 第一次回代过程开始 */ {s1=0; for(j=1;js1=s1+t*y[j]; } y[i]=(b[i]+s1)/l[i][i]; }
for(i=n;i>=1;i--) /* 第二次回代过程开始 */ { s2=0; for(j=n;j>i;j--) { t=-u[i][j];
s2=s2+t*x[j]; } x[i]=(y[i]+s2)/u[i][i]; } }
void main()
{float a[100][100],l[100][100],u[100][100],x[100],b[100]; int i,j,n,r,k; float s1,s2;
for(i=1;i<=99;i++)/*将所有的数组置零,同时将L矩阵的对角值设为1*/ for(j=1;j<=99;j++) { l[i][j]=0,u[i][j]=0; if(j==i) l[i][j]=1; }
printf (\"input n:\\n\");/*输入方程组的个数*/ scanf(\"%d\
printf (\"input array A:\\n\");/*读取原矩阵A*/ for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
scanf(\"%f\
printf (\"input array B:\\n\");/*读取列矩阵B*/ for(i=1;i<=n;i++)
scanf(\"%f\
for(r=1;r<=n;r++)/*求解矩阵L和U*/ { for(i=r;i<=n;i++) {
s1=0;
for(k=1;k<=r-1;k++) s1=s1+l[r][k]*u[k][i]; u[r][i]=a[r][i]-s1; }
for(i=r+1;i<=n;i++) {s2=0;
for(k=1;k<=r-1;k++) s2=s2+l[i][k]*u[k][r]; l[i][r]=(a[i][r]-s2)/u[r][r]; } }
printf(\"array L:\\n\");/*输出矩阵L*/ for(i=1;i<=n;i++) {
for(j=1;j<=n;j++)
printf(\"%7.3f \ printf(\"\\n\"); }
printf(\"array U:\\n\");/*输出矩阵U*/ for(i=1;i<=n;i++) {
for(j=1;j<=n;j++)
printf(\"%7.3f \ printf(\"\\n\"); }
solve(l,u,b,x,n); printf(\"解为:\\n\"); for(i=1;i<=n;i++)
printf(\"x%d=%f\\n\}
实验结果: