调用qsort()排序。把 某个书店同名的书籍按照价格从低到高排序,输出排序结果。
时间: 2024-11-15 16:29:18 浏览: 22
`qsort()`函数是C语言标准库中的一个函数,用于对数组进行快速排序。如果你有一个包含书店同名书籍结构体的数组,比如`Book[]`,其中每个元素有书名(name)和价格(price)两个字段,你可以这样做:
首先,你需要定义一个自定义的比较函数,通常称为"comparision function",该函数接受两个书本指针作为参数,并返回一个整数来指示它们之间的顺序。如果第一个书本应该排在第二个之前,这个函数就返回一个负值;如果是相等,则返回0;反之则返回正值。
```c
// 定义书籍结构体
typedef struct {
char name[100];
float price;
} Book;
// 自定义比较函数
int compare_books(const void *a, const void *b) {
const Book *book1 = a, *book2 = b;
return book1->price - book2->price; // 价格越低,返回值越小
}
void sort_books(Book books[], int n) {
qsort(books, n, sizeof(Book), compare_books);
}
```
接下来,在你的主程序中,假设`books`是你的书籍数组,`num_books`是数组长度,你可以调用`sort_books`函数进行排序:
```c
int main() {
Book books[NUM_BOOKS]; // 假设 NUM_BOOKS 是数组的实际大小
... // 初始化书籍数据
sort_books(books, num_books);
for (int i = 0; i < num_books; i++) {
printf("%s %.2f\n", books[i].name, books[i].price); // 输出排序后的结果
}
return 0;
}
```
这将会按照价格将同名书籍从低到高打印出来。
阅读全文