C语言中,什么叫做segmentation fault???急~~谢谢了啊 10
我以运行我的程序就出来什么segmentationfault~那是什么东西啊??各位大侠,救救我吧……这是我的程序~intmain(void){intn;printf("...
我以运行我的程序就出来什么segmentation fault~那是什么东西啊??各位大侠,救救我吧……这是我的程序~
int main(void)
{
int n;
printf("Enter dimension of square matrix:\n");
scanf("%d", &n);
printf("Enter the %d entries of the matrix:\n", n*n);
//This part creates a n by n matrix to let the user insert the data.
double **matrix=(double**)malloc(n*sizeof(double*));
int i=0;
int j=0;
for(i=0;i<n;i++)
matrix[i]=(double*)malloc(n*sizeof(double));
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%lf",& matrix[i][j]);
}
}
printf("The input matrix:\nA = \n");
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
printf(" %12.3e ", matrix[i][j]);
}
printf("\n");
}
//The following part creates a corresponding n by n identity matrix.
double **matrix2=(double**)malloc(n*sizeof(double*));
int a;
for(a=0;a<n;a++)
matrix2[a]=(double*)malloc(n*sizeof(double));
for(a=0;a<n;a++)
{
int b;
for(b=0;b<n;b++)
{
if(a==b)
matrix2[a][b]=1;
else
matrix2[a][b]=0;
}
}
if(matrix[0][0] != 0)
;
else
{
int m;
int o;
for(m=1;1<n;m++)
{
if(matrix[0][m] == 0)
;
else
{
for(o=0;o<n;o++)
{
double n;
n = matrix[o][m];
matrix[o][m] = matrix[o][0];
matrix[o][0]=n;
}
}
}
}
int e;
for(e=0; e<n; e++)
{
int c,d;
for(c=0; c<n; c++)
{
if(c==e)
{
for(d=0; d<n; d++)
{
matrix[d][c] *= (1/matrix[e][e]);
matrix2[d][c] *= (1/matrix2[e][e]);
}
}
else
{
for(d=0; d<n; d++)
{
matrix[d][c] -= (matrix[0][c]*matrix[e][e]);
matrix2[d][c] -= (matrix2[0][c]*matrix2[e][e]);
}
}
}
printf("After Step 4:\nA =\n");
printf(" %12.3e ", matrix[d][c]);
printf("\n");
printf("B =\n");
printf(" %12.3e ", matrix2[d][c]);
}
printf("The inverse of the input matrix:\nB =\n");
int k,l;
for(k=0; k<n; k++)
{
for(l=0; l<n; l++)
printf(" %12.3e ", matrix2[l][k]);
}
return 0;
} 展开
int main(void)
{
int n;
printf("Enter dimension of square matrix:\n");
scanf("%d", &n);
printf("Enter the %d entries of the matrix:\n", n*n);
//This part creates a n by n matrix to let the user insert the data.
double **matrix=(double**)malloc(n*sizeof(double*));
int i=0;
int j=0;
for(i=0;i<n;i++)
matrix[i]=(double*)malloc(n*sizeof(double));
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%lf",& matrix[i][j]);
}
}
printf("The input matrix:\nA = \n");
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
printf(" %12.3e ", matrix[i][j]);
}
printf("\n");
}
//The following part creates a corresponding n by n identity matrix.
double **matrix2=(double**)malloc(n*sizeof(double*));
int a;
for(a=0;a<n;a++)
matrix2[a]=(double*)malloc(n*sizeof(double));
for(a=0;a<n;a++)
{
int b;
for(b=0;b<n;b++)
{
if(a==b)
matrix2[a][b]=1;
else
matrix2[a][b]=0;
}
}
if(matrix[0][0] != 0)
;
else
{
int m;
int o;
for(m=1;1<n;m++)
{
if(matrix[0][m] == 0)
;
else
{
for(o=0;o<n;o++)
{
double n;
n = matrix[o][m];
matrix[o][m] = matrix[o][0];
matrix[o][0]=n;
}
}
}
}
int e;
for(e=0; e<n; e++)
{
int c,d;
for(c=0; c<n; c++)
{
if(c==e)
{
for(d=0; d<n; d++)
{
matrix[d][c] *= (1/matrix[e][e]);
matrix2[d][c] *= (1/matrix2[e][e]);
}
}
else
{
for(d=0; d<n; d++)
{
matrix[d][c] -= (matrix[0][c]*matrix[e][e]);
matrix2[d][c] -= (matrix2[0][c]*matrix2[e][e]);
}
}
}
printf("After Step 4:\nA =\n");
printf(" %12.3e ", matrix[d][c]);
printf("\n");
printf("B =\n");
printf(" %12.3e ", matrix2[d][c]);
}
printf("The inverse of the input matrix:\nB =\n");
int k,l;
for(k=0; k<n; k++)
{
for(l=0; l<n; l++)
printf(" %12.3e ", matrix2[l][k]);
}
return 0;
} 展开
4个回答
展开全部
一般而言, 就是数组越界访问, 相当于runtime error.
查查你的程序对matrix数组访问是否正确吧 估计有地方逻辑写错了
printf("After Step 4:\nA =\n");
printf(" %12.3e ", matrix[d][c]);
printf("\n");
printf("B =\n");
printf(" %12.3e ", matrix2[d][c]);
这里的matrix[d][c]越界访问了, 你的c此时等于n, 而matrix范围是0至n-1
查查你的程序对matrix数组访问是否正确吧 估计有地方逻辑写错了
printf("After Step 4:\nA =\n");
printf(" %12.3e ", matrix[d][c]);
printf("\n");
printf("B =\n");
printf(" %12.3e ", matrix2[d][c]);
这里的matrix[d][c]越界访问了, 你的c此时等于n, 而matrix范围是0至n-1
展开全部
segmentation fault 是和内存有关的错误 可能是你的数组越界了 也可能是你的 printf前后没对应
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
c++编译没有问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我也不太知道你的错误在那里,但是我想说的是,你这里面动态分配内存的地方,完全可以用一个二维数组解决啊~!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询