所以我无法运行下面附加的代码。该程序是关于两个矩阵的乘法。我正在检测堆栈崩溃。我是这个问题的新手。我的操作系统是 Ubuntu 18.04
#include<stdio.h>
#define R1 3
#define C1 4
#define R2 C1
#define C2 2
void main()
{
int i,j,k,mat1[R1][C1],mat2[R2][C2],mat3[R1][C2];
printf("Enter 1st matrix(%dX%d) :",R1,C1);
for(i=0;i<R1;i++)
{
for(j=0;j<C1;j++)
{
scanf("%d",&mat1[R1][C2]);
}
}
printf("Enter 2nd matrix(%dX%d) :",R2,C2);
for(i=0;i<R2;i++)
{
for(j=0;j<C2;j++)
{
scanf("%d",&mat1[R1][C2]);
}
}
for(i=0;i<R1;i++)
{
for(j=0;j<C2;j++)
{
mat3[i][j]=0;
for(k=0;k<C1;k++)
{
mat3[i][j] += mat1[i][k] * mat2[k][j];
}
}
}
printf("The resultant matrices are :");
for(i=0;i<R1;i++)
{
for(j=0;j<C2;j++)
{
printf("%5d",mat3[i][j]);
}
printf("\n");
}
}
最佳答案
在
for(i=0;i<R1;i++) { for(j=0;j<C1;j++) { scanf("%d",&mat1[R1][C2]); } } printf("Enter 2nd matrix(%dX%d) :",R2,C2); for(i=0;i<R2;i++) { for(j=0;j<C2;j++) { scanf("%d",&mat1[R1][C2]); } }
你没有设置你想要的索引和矩阵,必须是
for(i=0;i<R1;i++)
{
for(j=0;j<C1;j++)
{
scanf("%d",&mat1[i][j]); /* correct indexes */
}
}
printf("Enter 2nd matrix(%dX%d) :",R2,C2);
for(i=0;i<R2;i++)
{
for(j=0;j<C2;j++)
{
scanf("%d",&mat2[i][j]); /* correct matrix and indexes */
}
}
我还鼓励您验证您的 scanf 返回 1 以检查是否使用输入有效的输入
关于c - 为什么这个代码块显示堆栈粉碎检测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56313665/