编写程序,从键盘输入一个n(n<=10)本书的名称和定价并存入结构体数组中,从中查找定价最高和最低的书,输出该书的名称和定价。
时间: 2023-06-01 10:02:18 浏览: 182
编写程序实现以下功能:从键盘输入十个整数,用冒泡法排序后按从小到大输出
### 回答1:
好的,以下是程序的中文描述:
1. 定义一个结构体Book,包含两个成员变量:书名name和价格price。
2. 从键盘输入一个整数n,表示要输入n本书的信息。
3. 定义一个结构体数组books,长度为n,用于存储n本书的信息。
4. 循环n次,每次从键盘输入一本书的名称和价格,并存入books数组中。
5. 定义两个变量max和min,分别用于存储定价最高和最低的书的下标。
6. 循环遍历books数组,找到定价最高和最低的书的下标,并分别存入max和min中。
7. 输出定价最高和最低的书的名称和价格。
8. 程序结束。
希望对您有帮助!
### 回答2:
首先,我们要定义一个结构体来存储每本书的名称和定价:
```
struct Book {
char name[50];
float price;
};
```
接下来,我们可以利用循环和 scanf 函数从键盘输入 n 本书的名称和定价,并存入结构体数组中:
```
int n;
printf("请输入书的个数(不超过10):");
scanf("%d", &n);
struct Book books[n];
for (int i = 0; i < n; i++) {
printf("请输入第%d本书的名称和定价:", i+1);
scanf("%s%f", books[i].name, &books[i].price);
}
```
然后我们需要遍历结构体数组,找出定价最高和最低的书,并记录下它们的名称和定价:
```
float max_price = books[0].price, min_price = books[0].price;
int max_index = 0, min_index = 0;
for (int i = 1; i < n; 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("定价最高的书是:%s,价格为%.2f元。\n", books[max_index].name, max_price);
printf("定价最低的书是:%s,价格为%.2f元。\n", books[min_index].name, min_price);
```
完整代码如下:
```
#include <stdio.h>
struct Book {
char name[50];
float price;
};
int main() {
int n;
printf("请输入书的个数(不超过10):");
scanf("%d", &n);
struct Book books[n];
for (int i = 0; i < n; i++) {
printf("请输入第%d本书的名称和定价:", i+1);
scanf("%s%f", books[i].name, &books[i].price);
}
float max_price = books[0].price, min_price = books[0].price;
int max_index = 0, min_index = 0;
for (int i = 1; i < n; 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("定价最高的书是:%s,价格为%.2f元。\n", books[max_index].name, max_price);
printf("定价最低的书是:%s,价格为%.2f元。\n", books[min_index].name, min_price);
return 0;
}
```
### 回答3:
本题需要用到结构体数组和查找算法。首先,需要定义一个结构体类型,包含书名和定价两个属性。
```
typedef struct {
char name[50];
float price;
} Book;
```
接着,在主函数中,定义一个长度为n的结构体数组,循环输入每一本书的信息。
```
Book books[10];
for (int i = 0; i < n; i++) {
printf("请输入第%d本书的名称和定价:", i+1);
scanf("%s %f", books[i].name, &books[i].price);
}
```
然后,遍历结构体数组,查找定价最高和最低的书。这里可以采用线性查找算法,也可以先排序再查找。这里为了简便起见,采用线性查找。
```
float max_price = books[0].price;
float min_price = books[0].price;
int max_index = 0, min_index = 0;
for (int i = 1; i < n; 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("定价最高的书是%s,价格为%.2f\n", books[max_index].name, max_price);
printf("定价最低的书是%s,价格为%.2f\n", books[min_index].name, min_price);
```
阅读全文