学校要求做一道关于矩阵运算的题目,计算两个矩阵的和与积(要求用malloc函数来做)。我写完之后编译通过,可是运行时在打印输入的矩阵时就发生错误。百思不得其解,求哪位高手指点指点。(调试时显示的错误为:“juzhenjia+.exe 中的 0x00411555 处未处理的异常: 0xC0000005: 读取位置 0xfdfdfdfd 时发生访问冲突”)(发生错误的地方已用红色表示)
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
void main()
{
int i,j,r1,c1;
int **p1;
int **p2;
int **p3;
//input row and column
printf("请输入两个矩阵的行数:");
scanf("%d",&r1);
printf("请输入两个矩阵的列数:");
scanf("%d",&c1);
//input 1
p1=(int **)malloc(r1*sizeof(int *));
for(i=0;i<r1;i++)
{
p1[i]=(int *)malloc(c1*sizeof(int));
}
printf("请输入第一个矩阵(%d*%d):\n",r1,c1);
for (i=0;i<r1;i++)
{
for (j=0;j<c1;j++)
{
scanf("%d",&p1[i][j]);
}
}
printf("第一个矩阵是:\n");
for (i=0;i<r1;i++);
{
for (j=0;j<c1;j++)
{
printf("%5d",p1[i][j]);
}
printf("\n");
}
//input 2
p2=(int **)malloc(r1*sizeof(int *));
for(i=0;i<r1;i++)
{
p2[i]=(int *)malloc(c1*sizeof(int));
}
printf("请输入第二个矩阵(%d*%d):\n",r1,c1);
for (i=0;i<r1;i++)
{
for (j=0;j<c1;j++)
{
scanf("%d",&p2[i][j]);
}
}
printf("第二个矩阵是:\n");
for (i=0;i<r1;i++);
{
for (j=0;j<c1;j++)
{
printf("%5d",p2[i][j]);
}
printf("\n");
}
//calculate
p3=(int **)malloc(r1*sizeof(int *));
for(i=0;i<r1;i++)
{
p3[i]=(int *)malloc(c1*sizeof(int));
}
for (i=0;i<r1;i++)
{
for (j=0;j<c1;j++)
{
p3[i][j]=p1[i][j]+p2[i][j];
}
}
//output
for (i=0;i<r1;i++)
{
for (j=0;j<c1;j++)
{
printf("%5d",p3[i][j]);
}
}
}