很简单的矩阵问题,超简单的,代码一跑就知道哪里错了QAQ

#include<stdio.h>
void main()
{
  int a[4][4],row_max[3],column_min[3];
  int i,j,sum=0;
  for(i=0;i<=3;i++)
  {
    for(j=0;j<=3;j++)
     a[i][j]=0;
  }
  printf("录入矩阵元素:\n");
    for(i=0;i<=3;i++)
  {
    for(j=0;j<=3;j++)
    scanf("%d",&a[i][j]);
  }
  for(i=0;i<=3;i++)
  printf("[%d  %d  %d  %d]\n",a[i][0],a[i][1],a[i][2],a[i][3]);
  for(i=0;i<=3;i++)
  {
    row_max[i]=a[i][0];
    for(j=1;j<=3;j++)
    {
      if(a[i][j]>row_max[i])
      row_max[i]=a[i][j];
    }
    printf("第%d行的最大数为:%d\n",i+1,row_max[i]);
  }
  printf("\n");
  for(j=0;j<=3;j++)
  {
    column_min[j]=a[0][j];
    for(i=1;i<=3;i++)
    {
      if(a[i][j]<column_min[j])
      column_min[j]=a[i][j];
    }
    printf("第%d列的最小数为:%d\n",j+1,column_min[j]);
  }
  printf("%d %d\n",a[0][0],a[0][3]);
  for(i=0;i<=3;i++)
  {
  printf("%d ",sum);
  sum=a[i][i]+a[i][3-i]+sum;
  }
  printf("\n对角线总和为%d\n",sum-1);
}

但我就是解决不了。。。
主要问题就是a[0][0]的值好像是第四行的最大值,但是我不知道,我哪里改变a[0][0]的值了

int a[4][4],row_max[3],column_min[3];
数组越界
row_max
这里只有3个元素
for(j=1;j<=3;j++)
这里应该是0~2,而不是1~3
别德类似