程序运行完弹出 内存不能为read 异常 求解释

程序运行完弹出 内存不能为read 错误 求解释
本人用的XP系统   VC6     

赋值一个 5*5 的二维数组, 从1到25依次赋值,然后打印出该数组左下半三角

程序已经调试完毕,无误,但是程序最后老是弹出 内存不能为read警告  不知道这个程序哪里写错了,求解释


#include<stdio.h>
#define N 5
void main()
{
int a[N][N],i,j;
a[0][0]=1;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
{
     a[i+1][j]=a[i][j]+N;
    a[i][j+1]=a[i][j]+1;
}

for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
if(i<4-j)
printf("  ");
            else
printf("%d  ",a[i][j]);
}
printf("\n");
}

}

------解决思路----------------------
a[i+1][j]? 当i<N时,存在a[N][j],越界了哦