运行c语言程序的时候直接退了,求大跌看看是哪里的问题

运行程序的时候直接退了,求大跌看看是哪里的问题

#include 
int main()
{
    int q,i,j,k,n,w,light=0;
    int star[2000][2000],x[2000],y[2000];
    scanf("%d",&n);
    for(i=0;i"%d%d%d",&x[i],&y[i],&w);
        star[x[i]][y[i]]=w;
    }
    scanf("%d",&q);
    int x1,y1,x2,y2;
    for(i=0;i"%d%d%d%d",&x1,&y1,&x2,&y2);
        for(j=0;j=x1)&&(y[j]<=y2&&y[j]>=y1)){
                light+=star[x[j]][y[j]];
            }
        }printf("%d\n",&light);
    }
}

int star[2000][2000]放到int main()上面,变成全局变量就行了

可能是二维数组开得太大了,爆栈了,改小一点试试
或者把它放在全局数组位置

#include <stdio.h>
int star[2000][2000];
int main()
{
    int q,i,j,k,n,w,light=0;
    int x[2000],y[2000];
    scanf("%d",&n);
    for(i=0;i<n;i++){
        scanf("%d%d%d",&x[i],&y[i],&w);
        star[x[i]][y[i]]=w;
    }
    scanf("%d",&q);
    int x1,y1,x2,y2;
    for(i=0;i<q;i++){
        scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
        for(j=0;j<n;j++){
            if((x[j]<=x2&&x[j]>=x1)&&(y[j]<=y2&&y[j]>=y1)){
                light+=star[x[j]][y[j]];
            }
        }printf("%d\n",&light);
    }
}