1020 月饼 (25 分)c语言

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct mooncake {
    double mount;
    double sumprice;
    double single;
}mooncake;
int comp(const void *a,const void *b){
    mooncake s1=*(mooncake *)a;
    mooncake s2=*(mooncake *)b;
    return (s1.single<s2.single);
}
int main()
{
    int n,d;
    scanf("%d %d",&n,&d);
    mooncake cake[n];
    int i=0;
    for(i=0;i<n;i++){
        scanf("%lf",&cake[i].mount);
    }
    for(i=0;i<n;i++){
        scanf("%lf",&cake[i].sumprice);
    }
    for(i=0;i<n;i++){
        cake[i].single=cake[i].sumprice/cake[i].mount;
    }
    qsort(cake,n,sizeof(cake),comp);
    double sum=0.0;
    for(i=0;i<n;i++){
        if(cake[i].mount<=d){
            sum+=cake[i].sumprice;
        }else if(cake[i].mount>d){
            sum+=cake[i].single*d;
            break;
        }
        d=d-cake[i].mount;
    }
    printf("%.2lf",sum);
    return 0;
}

这句也有问题:
qsort(cake,n,sizeof(mooncake),comp); //qsort(cake,n,sizeof(cake),comp);

第18行,mooncake cake[n]; 数组的定义有问题,C不支持这样定义数组,建议改为:mooncake cake[1000]; ,再试试。
另一篇博文,供参考:

大家伙们帮帮忙,我在pta上显示段错误,我也不知道该怎么办,求求大佬们!