给你改半天...问题太多了... 告诉我你要做个什么样的功能 我给重写遍吧....改比重写都费劲
如果你非要自己写... 就把函数传值和返回值那地方在看看
#include
int len(int n);
void row_transformation_1(int n,int *p[],int i,int j,int l);
void row_transformation_2(int n,int *p[],int i,int j);
void row_transformation_3(int n,int *p[],int i,int l);
int det(int n,int *p[]);
int main()
{
int n;
int i,j;
int *a[100],*b[100];
int **p;
scanf("%d",&n);
p=a;
for(i=0;i
for(j=0;j
for(;j<2*n;j++)
{
if(i==(j-n)) a[i][j]=1;
else a[i][j]=0;
}
}
for(i=0;i
for(j=0;j
}
if(det(n,b)==0) printf("The inverse matrix does not exist\n");
else
{ for(j=0;j
if(a[j][j]==0)
{ for(i=j;i
}
else
{for(i=j+1;i
for(i=n-1;i>=0;i--)
{
for(j=i+1;j
row_transformation_1(n,a,i,j,1/a[j][j]);
}
row_transformation_3(n,a,i,1/a[i][i]);
}//变成单位矩阵
for(i=0;i
for(j=n;j<2*n;j++)
{printf("%d\t",a[i][j]);}
putchar('\n');
}//输出
}
return 0;
}
void row_transformation_1(int n,int *p[],int i,int j,int l)
{
int k;
for(k=0;k
}
void row_transformation_2(int n,int *p[],int i,int j)
{
int t,k;
for(k=0;k
*(*(p+i)+k)=*(*(p+j)+k);
*(*(p+j)+k)=t;
}
}
void row_transformation_3(int n,int *p[],int i,int l)
{ int k;
for(k=0;k
}
int len(int n)
{return n;}
int det(int n,int *p[])
{
int i,j,k,m,sum=0;
if(n>1)
{ for(k=0;k
int **a;
a=(int**)malloc(100);
for(j=0;j
for(i=0;i
if(j>=k) m=1; else m=0;
a[i][j]=*(*(p+i+1)+j+m);
}
}
sum+=(*(*p+k))*(pow(-1,k+2))*(det(n-1,a));
}
}
else return **p;
return sum;
}
给你改完能编译通过了... 没看明白你要的什么功能所以也不知道好不好使