查找书籍 (20分)
给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和定价。
输入格式:
输入第一行给出正整数n(<10),随后给出n本书的信息。每本书在一行中给出书名,即长度不超过30的字符串,随后一行中给出正实数价格。题目保证没有同样价格的书。
输出格式:
在一行中按照“价格, 书名”的格式先后输出价格最高和最低的书。价格保留2位小数。
输入样例:
3
Programming in C
21.5
Programming in VB
18.5
Programming in Delphi
25.0
输出样例:
25.00, Programming in Delphi
18.50, Programming in VB
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct books
{
char name[31];//字符数组最好要多留一个空位出来,用来存储'\0'!!!
double price;
} bookinf[10];
int main()
{
struct books bookinf[10];
int x,i,a=0,b=0;//将a,b初始化为0,这样就可以在x=1时(也就是只输入了一本书籍的信息时),输出的max和min都是[0](唯一输入的那本书的信息)
double max,min;
scanf("%d",&x);
for(i=0;i<x;i++)
{
scanf("\n");//要单独输入一个换行,否则输入的字符串无法存储到字符变量中
gets(bookinf[i].name);//gets能够读入带空格的字符串,而%s只能读入单个单词、一遇空格就结束
//bookinf[i].name [i]在bookinf(定义的结构体变量)后面!!!,不是在name后面
scanf("%lf",&bookinf[i].price);//输入数字时,要加&取址符
}
min=bookinf[0].price;
max=bookinf[0].price;
//这里最好min,max的初值赋为数组中的第一个
for(i=0; i<x; i++)
{
if(bookinf[i].price>max)
{
max=bookinf[i].price;
a=i;
}
}
for(i=0; i<x; i++)
{
if(bookinf[i].price<min)
{
min=bookinf[i].price;
b=i;
}
}
//printf("\n");
printf("%.2f, %s\n",max,bookinf[a].name);
printf("%.2f, %s\n",min,bookinf[b].name);
return 0;
}
注意输入格式