思路:将输入的书籍信息存储在一个结构体数组中,使用快速排序算法按照出版日期升序排序,最后遍历输出即可。

代码如下:

#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;
}
C语言图书管理系统:按出版日期排序输出书籍信息

原文地址: https://www.cveoy.top/t/topic/ojJK 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录