我写的代码运行的只有一条测试数据能够通过,想不出特例是什么了

img



#include<stdio.h>
#include <stdlib.h>
int main()
{
    int i,j,k,p,m,n;
    int sum=0;
    scanf("%d %d",&m,&n);
    int* num=(int*)malloc(m*n);
    for(i=0;i<m*n;i++)
    {
        scanf("%d",num+i);
    }
    //矩阵两侧的数据的和 
    for(i=0;i<(m*n);i+=n)
    {
        sum+=num[i];
        sum+=num[i+n-1];
     } 
     //第一行和最后一行的数据的和 (除去首尾的数据) 
     for(p=1,k=((m*n)-2),j=(n-2);j>0;p++,k--,j--)
     {
         sum+=num[p];
         sum+=num[k];
      } 
      free(num);
      printf("%d",sum);
    return 0; 
}

内存申请改为:int* num = (int*)malloc(m * n*sizeof(int)); //申请的是字节数,int为4字节