为何这个程序的输出结果是这样的,竟然有101

为什么这个程序的输出结果是这样的,竟然有101?
#include <stdio.h>
void main (){
int i,j=1,a[50];

        printf("1~100内的所有偶数为:\n");
for (i=1;i<=50;i++){
if (j<=50){
             a[i]=2*j;
     j++;
}
        printf("%d\t",a[i]);        
}

        

}为何这个程序的输出结果是这样的,竟然有101
------解决思路----------------------
从a[0]开始的,,没有a[50],后面的数。随机的。