这哪里错了,不能运行,求大神指导
#include <stdio.h> #include <stdlib.h>
#define N 10
float getmx(float a[N][N], float x[N], int i, int n)
{
float mx = 0;
int r;
for(r=i+1; r<n; r++)
{
mx += a[i][r] * x[r];
}
return mx;
}
float getmy(float a[N][N], float y[N], int i, int n)
{
float my = 0;
int r;
for(r=0; r<n; r++)
{
if(i != r) my += a[i][r] * y[r];
}
return my;
}
float getx(float a[N][N], float b[N], float x[N], int i, int n)
{
float result;
if(i==n-1)
result = (float)(b[i]/a[n-1][n-1]);
else
result = (float)((b[i]-getmx(a,x,i,n))/a[i][i]);
return result;
}
float gety(float a[N][N], float b[N], float y[N], int i, int n)
{
float result;
if(i==0)
result = float(b[i]/a[i][i]);
else
result = float((b[i]-getmy(a,y,i,n))/a[i][i]);
return result;
}
void main()
{ float l[N][N]={0};
float u[N][N]={0};
float y[N]={0};
float x[N]={0};
float a[N][N];
float b[N];
float sum=0;
int i,j,k;
int n;
int flag=1;
while(flag)
{
printf("qingshurujuzhendaxiao:");
scanf("%d", &n);
if(n>N){
printf("juzhenguoda!\n");
continue;
}
flag=0;
}
printf("qingshuruxishujuzhengzhi:\n");
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
printf("a[%d][%d]: ", i, j);
scanf("%f", &a[i][j]);
}
}
printf("qingshuruyouduanxiangshuzu:\n");
for(i=0; i<n; i++)
{
printf("b[%d]: ", i);
scanf("%f", &b[i]);
}
printf("\nyuanshijuzheng:\n");
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
printf("%0.3f ",a[i][j]);
printf("\n");
}
printf("\n\n");
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
if(i==j) l[i][j] = 1;
}
}
for(i=0; i<n; i++)
{
u[0][i] = (float)(a[0][i]/l[0][0]);
}
for(i=0; i<n-1; i++)
{
for(j=i+1; j<n; j++)
{
for(k=0,sum=0; k<n; k++)
{
if(k != i) sum += l[j][k]*u[k][i];
}
l[j][i] = (float)((a[j][i]-sum)/u[i][i]);
}
for(j=i+1; j<n; j++)
{
for(k=0,sum=0; k<n; k++)
{
if(k != i+1) sum += l[i+1][k]*u[k][j];
}
u[i+1][j] = (float)((a[i+1][j]-sum));
}
}
printf("juzhenL:\n");
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
printf("%0.3f ", l[i][j]);
}
printf("\n");
}
printf("\njuzhenU:\n");
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
printf("%0.3f ", u[i][j]);
}
printf("\n");
}
for(i=0; i<n; i++)
{
y[i] = gety(l,b,y,i,n);
}
printf("\n\nshuzuY:\n");
for(i=0; i<n; i++)
{
printf("y%d = %0.3f\n", i+1,y[i]);
}
for(i=n-1; i>=0; i--)
{
x[i] = getx(u,y,x,i,n);
}
printf("\n\nshuzuX:\n");
for(i=0; i<n; i++)
{
printf("x%d = %0.3f\n", i+1,x[i]);
}
}