Duang~Lucky.Mr.Li 2022-05-07 21:05 采纳率: 25%
浏览 16

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

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; 
}
  • 写回答

1条回答 默认 最新

  • 树下等苹果 2022-05-07 22:06
    关注

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

    评论

报告相同问题?

问题事件

  • 修改了问题 5月7日
  • 创建了问题 5月7日