把n本书的书名和价格读入一个结构数组中,然后输出价格最高的书名和价格最低的书名。
有多个测试用例,每个测试用例第一行是一个整数n( 0 < n < 10000 ),接下来是n行,每行是一个书名(书名里面不含空格,书名长度不超过60个字符)和它的价格,空格分隔。
最后一个测试用例 n = 0,不用处理。
对应每个测试用例,单独输出一行:价格最高的书名和价格最低的书名,空格分隔。
3
XiYouJi 50
note 30
HongLouMeng 100
0
HongLouMeng note
#include<stdio.h>
#include<string.h>
struct book{ /*定义结构数组*/
char name[60];
int price;
};
int main() /*主函数*/
{
int i,n,index;
struct book books[60],temp;
while(scanf("%d",&n)!=EOF){
if(n==0) break;
for(i=0;i<n;i++){ /*以循环输入数据*/
scanf("%s",&books[i].name);
scanf("%d",&books[i].price);
}
for(i=0;i<n-1;i++){ /*选择法排序*/
index=i;
for(int j=i+1;j<n;j++)
if(books[j].price>books[index].price)
index=j;
temp=books[index];
books[index]=books[i];
books[i]=temp;
}
printf("%s %s\n",books[0].name,books[n-1].name);
index=0;
for(i=0;i<n;i++){ /*清空结构数组*/
books[i].price=0;
memset(&books[i].name,0,sizeof(struct book));
}
}
}