- 題目描述
dww想給gf買芒果幹,由于勤儉節約,是以dww想先在 n家店中挑出 m家成本效益最好的然後再細選。由于包裝規格以及降低難度,是以不考慮芒果幹品質,隻要考慮價格以及商家給的優惠。芒果幹原價為p元:
1)整數 z : 不為0時,表示商家打 z折;
2)整數 y : 不為0時,表示dww需要付 y元運費;
3)整數g, h :不為0時,表示滿 g元減 h元;
當兩家價格一緻時,以商家店名的字典序排序。可參考樣例。請幫dww挑選這m家店,并計算相應需要花費的價格。
- 輸入
一行包含兩個整數 n, m ( 0 < m <= n < 1000 )
接下來 n行,每行包括店名 s 以及各整數 p, z ( 0 < z < 10 ), y, g, h ( 0 <= h <= g <= p < 105)
- 輸出
輸出 m 行排序後的結果,每行包括店名,以及最終價格
- 樣例輸入
3 3 Threesquirrels 24 9 5 20 1 Lppz 27 0 7 0 0 Becheery 28 0 7 20 1
- 樣例輸出
Threesquirrels 25.60 Becheery 34.00 Lppz 34.00
考察結構的運用。
#include <stdio.h>
#include <string.h>
typedef struct stores
{
char name[100];
double p,z,y,g,h,result;
}st;
int main()
{
int i,j,n,m;
scanf("%d %d",&n,&m);
st s[100];
st t;
for(i=0;i<n;i++)
{
scanf("%s", s[i].name);
scanf("%lf %lf %lf %lf %lf",&s[i].p,&s[i].z,&s[i].y,&s[i].g,&s[i].h);
s[i].result=s[i].p;
if(s[i].z!=0)
s[i].result=s[i].p*s[i].z/10;
if(s[i].y!=0)
s[i].result=s[i].result+s[i].y;
if(s[i].g!=0&&s[i].h!=0)
{
if(s[i].result>=s[i].g)
s[i].result-=s[i].h;
}
}
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(s[i].result>s[j].result)
{
t=s[i];
s[i]=s[j];
s[j]=t;
}
else if(s[i].result==s[j].result)
{
if('s[i].name[0]'>'s[i].name[0]') //若相等按ASCII碼排序。
{
t=s[i];
s[i]=s[j];
s[j]=t;
}
}
}
}
for(i=0;i<m;i++)
{
printf("%s %.2f\n",s[i].name,s[i].result);
}
return 0;
}