#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上显示段错误,我也不知道该怎么办,求求大佬们!