题目描述
LYH的朋友XY很喜欢喝牛奶,他几乎每天都要喝一袋牛奶。但是XY买牛奶时很讲究,如果不符合他的要求,就算不喝他也不会买的。他一共有两个要求:(1)容量大于300毫升的不买(2)价格大于5元或者小于1.5元的不买。一天,XY又去超市买牛奶了,超市里一共有N种牛奶,并且知道每种牛奶的价格和容量,你能告诉XY他应该买哪些牛奶么?(如果都符合,他会全部买下来,因为XY是土豪)。
输入
先输入一个T,表示有T组测试数据(T≤100)。
每组数据先输入一个N,表示有N种牛奶(N≤15)。
接下来N行,每行输入3项内容,分别代表每种牛奶的名称、价格、容量,每两项内容之间是用空格隔开的。
输出
输出满足XY的要求的牛奶的名称和需要支付的总钱数,钱数保留1位小数。如果一种牛奶都买不了,输出-1。
样例输入
3 3 mengniu 2 120 yili 3 300 telunsu 6 200 5 yili 1.6 150 mengniu 3 200 Telunsu 8 100 Mengniu 2.3 103 Yili 3 200 1 Yili 6 120
样例输出
mengniu yili 5.0 yili mengniu Mengniu Yili 9.9 -1
提示
如果有多种牛奶符合,则按照输入的先后顺序输出。
分析:只需要先将数据输入,将符合要求的数据存储,并且对价格进行加和最后输出即可。
#include<stdio.h>
const int m1=20;
int n,m,temp;
char name[m1][m1];
double piece,num,sum2;
int sum[m1];
int main()
{
scanf("%d",&n);
while(n--)
{
temp=0,sum2=0;
scanf("%d",&m);
for(int i=0;i<m;i++)
{
scanf("%s %lf %lf",name[i],&piece,&num);//输入对应数据
if(num<=300&&(piece<=5&&piece>=1.5))
{ //如果数据符合要求,算入总价即可
sum[temp++]=i;//存储符合要求数据名字的下标
sum2+=piece;
}
}
if(temp==0)//如果符合要求的数据数量为零 输出-1
{
printf("-1\n");
continue;
}
for(int i=0;i<temp;i++)//输出对应符合要求数据的名字
{
printf("%s\n",name[sum[i]]);
}
printf("%.1lf\n",sum2);
}
}