查找书籍:从键盘输入10本书的名称和定价并存入结构数组中,从中查找定价最高和最低的书的名称和定价,并输出。试编写相应程序。
时间: 2024-12-12 18:13:35 浏览: 34
好的,我可以为您编写一个C语言程序来实现这个功能。以下是完整的代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_BOOKS 10
#define MAX_TITLE 100
struct Book {
char title[MAX_TITLE];
float price;
};
int main() {
struct Book books[MAX_BOOKS];
int i;
float max_price, min_price;
int max_index, min_index;
// 输入书籍信息
for (i = 0; i < MAX_BOOKS; i++) {
printf("请输入第 %d 本书的名称: ", i + 1);
fgets(books[i].title, MAX_TITLE, stdin);
books[i].title[strcspn(books[i].title, "\n")] = '\0'; // 去除换行符
printf("请输入第 %d 本书的价格: ", i + 1);
scanf("%f", &books[i].price);
getchar(); // 清除输入缓冲区中的换行符
}
// 初始化最大值和最小值
max_price = books[0].price;
min_price = books[0].price;
max_index = 0;
min_index = 0;
// 查找最高价和最低价的书
for (i = 1; i < MAX_BOOKS; i++) {
if (books[i].price > max_price) {
max_price = books[i].price;
max_index = i;
}
if (books[i].price < min_price) {
min_price = books[i].price;
min_index = i;
}
}
// 输出结果
printf("\n价格最高的书是: %s, 价格: %.2f\n", books[max_index].title, books[max_index].price);
printf("价格最低的书是: %s, 价格: %.2f\n", books[min_index].title, books[min_index].price);
return 0;
}
```
这个程序的工作原理如下:
1. 我们定义了一个结构体 `Book` 来存储书籍的名称和价格。
2. 在 main 函数中,我们创建了一个 `Book` 类型的数组来存储 10 本书的信息。
3. 我们使用 for 循环从键盘输入 10 本书的名称和价格。使用 fgets 函数读取书名,并用 getchar() 清除输入缓冲区中的换行符。
4. 我们初始化最大值和最小值为第一本书的价格,并记录其索引。
5. 接着,我们遍历数组,使用 if 语句比较每本书的价格,更新最大值和最小值及其索引。
6. 最后,我们输出价格最高和最低的书名及其价格。
这个程序能够满足您的要求,从用户输入的 10 本书中找出价格最高和最低的书,并输出它们的名称和价格。
阅读全文