c语言结构体数组使用出问题了

img


为什么我会经常报错这个,这个哪里有问题吗,有没有人来帮一下

这是代码

int j,k,l,m;
    float arr,arre;
    for(j=0;;j++)
    {
        a[j].sum=a[j].s1 * 0.7 + a[j].s2 * 0.3;
        if(a[j].num==0)
            break;
    }
    for(k=0,arr=0;karr=arr+a[k].sum;
    }
    arre=arr/j;
    for(l=0,m=0;lif(a[l].sum>arre)
        {
            h[m]=a[l];
            m++;
        }
    }
    return j;


因为数组下标越界了。

修改如下,供参考:

int fun(STU a[],int n,STU h[])
{
    int j,m;
    float arr = 0,arre;
    for(j=0;j<n;j++)
    {
        a[j].sum=a[j].s1 * 0.7 + a[j].s2 * 0.3;
        arr += a[j].sum;
    }
    arre = arr / n;
    for(j=0,m=0;j<n;j++)
    {
        if(a[j].sum > arre)
        {
            h[m]=a[j];
            m++;
        }
    }
    return m;
}