13行a[j][1]为啥没成功执行啊,最后输出的都是1

13行a[j][1]为啥没成功执行啊,最后输出的都是1

#include <stdio.h>
int main()
{
int a[21][2]={2,-1,2,-1,2,-1,2,-1,2,-1,2,-1,2,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1};
int i,j,num,sum;
for(i=1;i<4;i++)
    {
    for(j=0;j<21;j++)
        {
            if(a[21][2]<7-sum&&a[j][1]==-1&&num<7)
            {
                sum+=a[j][0];
                a[j][1]=i;
                num++;
            }
            if(sum==7&&num==7)
            break;
        }
    }
for(i=0;i<21;i++)
    printf("%d %d\n",a[i][0],a[i][1]);
return 0;
}

img


这都越界了啊
数组大小为2,可以访问的是0、1啊
静态二维数组要这样定义吧

img


有用记得采纳呐