习题9-4 查找书籍
给定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 <string.h> // 引入字符串处理库
struct book{ // 定义一个结构体类型book,包含书名和价格两个成员
char bookname[31]; // 书名,长度为31的字符数组
double price; // 价格,浮点数类型
}ch[10]; // 定义一个结构体数组ch,包含10个book类型的元素
int main(){ // 主函数
int n,i; // 定义整型变量n和i
double max,min; // 定义浮点型变量max和min
int maxi,mini; // 定义整型变量maxi和mini
scanf("%d",&n); // 从标准输入读取一个整数,赋值给n
getchar(); // 读取一个字符,但不使用
for(i=0;i<n;i++){ // 循环n次
gets(ch[i].bookname); // 从标准输入读取一行字符串,存储到ch[i].bookname中
scanf("%lf",&ch[i].price); // 从标准输入读取一个浮点数,赋值给ch[i].price
getchar(); // 读取一个字符,但不使用
}
max=min=ch[0].price; // 将ch[0].price的值赋给max和min
maxi=mini=0; // 将0赋给maxi和mini
for(i=1;i<n;i++){ // 循环n-1次
if(max<ch[i].price){ // 如果ch[i].price大于max
max=ch[i].price; // 将ch[i].price的值赋给max
maxi=i; // 将i赋给maxi
}
if(min>ch[i].price){ // 如果ch[i].price小于min
min=ch[i].price; // 将ch[i].price的值赋给min
mini=i; // 将i赋给mini
}
}
printf("%.2f, %s\n",ch[maxi].price,ch[maxi].bookname); // 打印价格最高的图书的价格和书名
printf("%.2f, %s",ch[mini].price,ch[mini].bookname); // 打印价格最低的图书的价格和书名
}