给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和定价。pta用c语言怎么做
时间: 2024-10-07 12:05:44 浏览: 31
在C语言中,你可以通过以下几个步骤来解决这个问题:
1. 首先,定义一个结构体(struct),比如`Book`,包含书籍的名称(char数组或字符串)和价格(float类型)两个成员变量。
```c
typedef struct {
char name[100];
float price;
} Book;
```
2. 定义两个全局变量,`max_book`和`min_book`,分别用于存储最高价和最低价的书籍信息,它们都是`Book`类型的指针,并初始化为NULL。
```c
Book max_book = {NULL, -INFINITY};
Book min_book = {NULL, INFINITY};
```
这里用`INFINITY`表示初始状态下认为所有的价格都是负无穷大或正无穷大。
3. 编写一个函数`findMinMaxBooks`,接受一个`Book`类型的数组`books`和数组长度`n`作为参数。遍历数组,更新`max_book`和`min_book`的值。
```c
void findMinMaxBooks(Book books[], int n) {
for (int i = 0; i < n; i++) {
if (books[i].price > max_book.price) {
max_book = books[i];
} else if (books[i].price < min_book.price) {
min_book = books[i];
}
}
}
```
4. 最后,在主函数中创建一个`Book`类型的数组,填充书籍名称和定价,然后调用`findMinMaxBooks`函数。
```c
int main() {
// 创建书籍数组并填充数据
Book book_data[] = {
{"书名1", 50.0},
{"书名2", 100.0},
{"书名3", 75.0}, // 更改此处示例数据以测试
// ...其他书籍...
};
int n = sizeof(book_data) / sizeof(book_data[0]);
findMinMaxBooks(book_data, n);
printf("定价最高的书名: %s, 价格: %.2f\n", max_book.name, max_book.price);
printf("定价最低的书名: %s, 价格: %.2f\n", min_book.name, min_book.price);
return 0;
}
```
这个程序会在输入的数据中找到定价最高和最低的书籍及其价格。记得替换`book_data`数组中的示例数据,以便运行测试。
阅读全文