以下代码显示了细分错误。
错误普遍存在
尝试了许多更改,但没有用
#include<conio.h>
#include<stdio.h>
void main()
{
static int a[100][100],b[100][100],c[100][100]={0};
int m,n,p,i,j,k;
printf("Enter no pf rows and colums for matrix A");
scanf("%d%d",&m,&n);
for(i=0;i<=m-1;i++)
{
for(j=0;j<=n-1;j++)
{
printf("enter no.");
scanf("%d",&a[i][j]);
}
}
printf("Enter no. of column for matrix b");
scanf("%d",&p);
for(i=0;i<=n-1;i++)
{
for(j=0;j<=p-1;j++)
{
printf("enter no.");
scanf("%d",&b[i][j]);
}
}
for(i=0;i<=m-1;i++)
{
for(j=0;i<=p-1;j++)
{
c[i][j]=0;
for(k=0;k<=n-1;k++)
{
c[i][j]=c[i][j]+a[i][k]*b[k][j];
}
}
}
printf(" The resultant matrix is");
for(i=0;i<=m-1;i++)
{
for(j=0;j<=p-1;j++)
{
printf("%d\t",c[i][j]);
}
printf("\n");
}
getch();
}
在turbo c ++上尝试过
错误139 细分错误
答案 0 :(得分:2)
错误139细分错误
这是因为
for(j=0;i<=p-1;j++)
必须
for(j=0;j<=p-1;j++)
当前 j 无休止地增加,因此c[i][j]=0;
和其他访问由于不确定的行为(您的分割错误)而不在数组中
其他备注:
要做for(j=0; j < p; j++)
是更好的选择,例如与size_t
兼容,它是索引的正确类型
我强烈建议您检查您的 scanf 是否成功,例如,您目前不知道是否输入了有效数字
if (scanf("%d%d",&m,&n)!= 2)
fprintf(stderr, "invalid numbers");
else {
还要在必要时检查输入值> 0,这对于行数和列数必须如此