C语言图书管理系统:按出版日期排序输出书籍信息
思路:将输入的书籍信息存储在一个结构体数组中,使用快速排序算法按照出版日期升序排序,最后遍历输出即可。
代码如下:
#include <stdio.h>
#include <string.h>
#define MAX_BOOKS 100
// 定义图书结构体
struct Book {
char name[101];
char author[101];
char date[11];
};
// 快速排序函数
void quickSort(struct Book books[], int left, int right) {
if (left >= right) {
return;
}
int i = left, j = right;
struct Book pivot = books[left];
while (i < j) {
while (i < j && strcmp(books[j].date, pivot.date) >= 0) {
j--;
}
if (i < j) {
books[i] = books[j];
i++;
}
while (i < j && strcmp(books[i].date, pivot.date) <= 0) {
i++;
}
if (i < j) {
books[j] = books[i];
j--;
}
}
books[i] = pivot;
quickSort(books, left, i - 1);
quickSort(books, i + 1, right);
}
int main() {
int n;
struct Book books[MAX_BOOKS];
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%s %s %s", books[i].name, books[i].author, books[i].date);
}
quickSort(books, 0, n - 1);
for (int i = 0; i < n; i++) {
printf("%s %s %s\n", books[i].name, books[i].author, books[i].date);
}
return 0;
}
原文地址: https://www.cveoy.top/t/topic/ojJK 著作权归作者所有。请勿转载和采集!