C语言 假设你正在开发一个图书管理系统,你需要设计个数据结构来表示图书。每本图书包括书名、作者和出版日期。按照出版日期升序排序,即先出版的图书排在前面。输入: 从键盘输入一个整数 n (1 <= n <= 100),表示图书数量。 然后输入 n 行,每行包合本图书的信息: 书名(不超过 100 个字符) 、作者(不超过 100 个字符)和出版日期(格式为YYYY-MM-DD),数据之间用空格隔开。输出: 按排序后的顺序输出图书的信息,每本图书一行,包括书名、作者和出版日期,数据之间用空格隔开。
时间: 2024-02-15 11:01:22 浏览: 63
好的,以下是一个C语言的代码实现:
```c
#include <stdio.h>
#include <string.h>
struct Book {
char name[101];
char author[101];
char date[11];
};
int main() {
int n;
scanf("%d", &n);
struct Book books[100];
for (int i = 0; i < n; i++) {
scanf("%s %s %s", books[i].name, books[i].author, books[i].date);
}
// 按照出版日期升序排序
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (strcmp(books[j].date, books[j + 1].date) > 0) {
struct Book temp = books[j];
books[j] = books[j + 1];
books[j + 1] = temp;
}
}
}
// 输出每本书的信息
for (int i = 0; i < n; i++) {
printf("%s %s %s\n", books[i].name, books[i].author, books[i].date);
}
return 0;
}
```
首先从键盘读取图书数量n,然后定义一个结构体Book表示每本图书的信息,包括书名、作者和出版日期。
接着循环n次读取每本书的信息,并将其存储为一个Book结构体数组books中。
使用冒泡排序法按照出版日期升序排序。在比较的时候,使用strcmp函数比较两个日期字符串的大小,如果前面的日期字符串大于后面的日期字符串,就交换两本书的位置。
最后循环输出每本书的信息。
阅读全文