这是代码
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;
}