上题是PTA团体程序设计天梯赛--练习题上的一道题,下面是给的用例
我的代码如下
#include <stdio.h>
typedef struct
{
float num;
float price;
float avg;
}CAKE;
CAKE cake[1010];
int main()
{
int N,D;
scanf("%d %d",&N,&D);
for(int i=0;i<N;i++)
{
scanf("%f",&cake[i].num);
}
for(int i=0;i<N;i++)
{
scanf("%f",&cake[i].price);
}
for(int i=0;i<N;i++)
{
cake[i].avg=cake[i].price/cake[i].num;
}
for(int i=0;i<N-1;i++)//按单价降序排列
{
int k=i;
for(int j=i+1;j<N;j++)
{
if(cake[j].avg>cake[k].avg)
{
k=j;
}
}
CAKE temp=cake[k];//交换k和i
cake[k]=cake[i];
cake[i]=temp;
}
int i=0;
float get=0;
while(D)
{
if(D>=cake[i].num)
{
D-=cake[i].num;
get+=cake[i].price;
i++;
}
else
{
get+=D*cake[i].avg;
D=0;
}
}
printf("%.2lf",get);
}
我的思路就是把单价算出来,然后按单价从高到低排列依次分配数量就行
但是问题出在了定义结构体数组上,你看
当我把cake数组定义在main函数外面的时候,答案是这样的
等我移到这里时
答案是这样
但当我移到这个位置时,有趣的事情发生了
、
其他啥都没动,有没有大佬知道指导!!感激涕零!!
标签:get,int,float,写题,num,报错,数组,cake,avg From: https://blog.csdn.net/Sr6220033/article/details/139666778