C语言矩阵乘法编码为什么结果不对?

问题遇到的现象和发生背景 矩阵乘法编码
用代码块功能插入代码,请勿粘贴截图

#include
#include
#include
#include
#define N 100
int main()
{
    int m,n,k;
    int i,j,p,sum;
    int x[N][N]={0};
    int y[N][N]={0};
    int z[N][N]={0};
    printf("请输入第一个矩阵的行数和列数:\n");
    scanf("%d %d",&m,&k);
    printf("第一个矩阵为:\n");
    srand((unsigned)time(NULL));
    for (i=0;ifor (j=0;jx[i][k]=rand()%100;
            printf("%5d ",x[i][k]);
        }
        printf("\n");
    } 
    
    printf("请输入第二个矩阵的列数:\n");
    scanf("%d",&n);
    printf("第二个矩阵为:\n");
    for (i=0;ifor (j=0;jy[k][j]=rand()%100;
            printf("%5d ",y[k][j]);
        }
        printf("\n");
    }
    
    printf("这个两个矩阵的乘积为:\n");
    for (i=0;ifor(j=0;j0;
            for(p=0;px[i][p]*y[p][j];        
            } 
            z[i][j]=sum;
            printf("%5d ",z[i][j]);
        }
        printf("\n");
    }
    return 0;
    
}
运行结果及报错内容 乘法结果出错
我的解答思路和尝试过的方法
我想要达到的结果 正确运行

那个for是啥玩意,你确定编译成功了