7-2 查找单价最高和最低的书籍
编写程序,从键盘输入 n (n<10)本书的名称和定价并存入结构数组中,查找并输出其中定价最高和最低的书的名称和定价。
输出格式语句:
printf("highest price: %.1f, %s\n", );
printf("lowest price: %.1f, %s\n",);
输入输出示例:括号内为说明,无需输入输出
输入样例:
3 (n=3) Programming in C 21.5 Programming in VB 18.5 Programming in Delphi 25
输出样例:
highest price: 25.0, Programming in Delphi lowest price: 18.5, Programming in VB
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
代码如下:
#include <stdio.h>
#include <string.h>
struct book{
char name[80]; // 书名
double price; // 价格
};
int main(){
int i,n;
scanf("%d",&n); // 读取图书数量
getchar(); // 清除缓冲区
struct book books[n]; // 创建图书数组
for(i=0;i<n;i++){
gets(books[i].name); // 读取书名
scanf("%lf",&books[i].price); // 读取价格
getchar(); // 清除缓冲区
}
double max,min; // 最高和最低价格
max=min=books[0].price; // 初始化最高和最低价格
int maxi,mini; // 最高和最低价格的索引
maxi=mini=0; // 初始化最高和最低价格的索引
for(i=1;i<n;i++){ // 遍历所有图书
if(max<books[i].price){ // 如果发现某本书的价格高于当前的最高价格
max=books[i].price; // 更新最高价格
maxi=i; // 更新最高价格的索引
}
if(min>books[i].price){ // 如果发现某本书的价格低于当前的最低价格
min=books[i].price; // 更新最低价格
mini=i; // 更新最低价格的索引
}
}
printf("highest price: %.1f, %s\n", max,books[maxi].name); // 输出最高价格的图书信息
printf("lowest price: %.1f, %s", min,books[mini].name); // 输出最低价格的图书信息
}