好,其中 date 是归还日期 格式是 年-月-日 ,给我写一个函数 筛选归还日期。使用C语言写
时间: 2024-05-15 19:17:20 浏览: 97
很高兴能够为您服务。以下是一个简单的 C 代码示例,可以将归还日期筛选出来:
```C
#include <stdio.h>
int main() {
char date[11]; // 存放日期的字符串
printf("请输入归还日期(格式为:年-月-日):");
scanf("%s", date); // 从控制台读取输入的日期字符串
int year, month, day; // 年月日三个整数变量
sscanf(date, "%d-%d-%d", &year, &month, &day); // 将日期字符串解析为三个整数
if (year >= 2022 && month >= 1 && day >= 1) {
printf("归还日期符合要求!\n");
} else {
printf("归还日期不符合要求!\n");
}
return 0;
}
```
该代码先从控制台读取用户输入的归还日期,然后使用 sscanf 函数将日期字符串解析为三个整数(年、月、日),最后进行日期筛选:只有当年份大于等于 2022,月份大于等于 1,日期大于等于 1 时,才算符合要求。
相关问题
好,其中 date 是归还日期 格式是 年-月-日 ,给我写一个函数,即将到期的图书。使用C语言写
好的,以下是将到期的图书打印出来的 C 语言函数:
```c
#include <stdio.h>
#include <time.h>
typedef struct {
char name[50];
char author[50];
char publish_time[20];
char return_time[20];
} Book;
void print_expired_books(Book books[], int length) {
time_t now = time(NULL);
struct tm* timeinfo = localtime(&now);
int year = timeinfo->tm_year + 1900;
int month = timeinfo->tm_mon + 1;
int day = timeinfo->tm_mday;
printf("以下图书已到期:\n");
for (int i = 0; i < length; i++) {
int r_year, r_month, r_day;
sscanf(books[i].return_time, "%d-%d-%d", &r_year, &r_month, &r_day);
if (r_year < year || (r_year == year && r_month < month) || (r_year == year && r_month == month && r_day <= day)) {
printf("%s(%s / %s)\n", books[i].name, books[i].author, books[i].publish_time);
}
}
}
int main() {
Book books[] = {
{"红楼梦", "曹雪芹", "1791-01-01", "2022-01-01"},
{"水浒传", "施耐庵", "1763-01-01", "2021-01-01"},
{"西游记", "吴承恩", "1592-01-01", "2020-01-01"},
{"三国演义", "罗贯中", "1522-01-01", "2019-01-01"}
};
int length = sizeof(books) / sizeof(Book);
print_expired_books(books, length);
return 0;
}
```
该函数接受一个 Book 数组和数组长度作为参数,打印出所有已经到期的图书名称、作者和出版日期。我们使用了 C 语言自带的 time.h 头文件中的 localtime 和 time 函数来获取当前日期。函数中循环遍历所有图书的归还日期,并与当前日期比较,如果到期则打印出来。
好,其中 date 是归还日期 格式是 年-月-日 ,给我写一个函数,即将到期的图书,还要有一个参数临期几天的。使用C语言写
以下是一个示例函数:
```
#include <stdio.h>
#include <time.h>
typedef struct {
char name[50];
char author[50];
char publisher[50];
char ISBN[20];
char category[20];
char borrower[50];
char borrow_date[11];
char return_date[11];
} BOOK;
int days_until_due(char *return_date, int warning_days) {
struct tm due_time = {0};
time_t now, due;
sscanf(return_date, "%d-%d-%d", &due_time.tm_year, &due_time.tm_mon, &due_time.tm_mday);
due_time.tm_year -= 1900;
due_time.tm_mon--;
time(&now);
due = mktime(&due_time);
return (int) (difftime(due, now) / (24 * 3600)) - warning_days;
}
void print_books_near_due(BOOK *books, int num_books, int warning_days) {
int i, days_left;
printf("The following books will be due soon:\n");
for (i = 0; i < num_books; i++) {
if (books[i].borrower[0] == '\0') continue;
days_left = days_until_due(books[i].return_date, warning_days);
if (days_left <= 0)
printf("%s, borrowed by %s, is due today.\n", books[i].name, books[i].borrower);
else if (days_left <= warning_days)
printf("%s, borrowed by %s, will be due in %d day(s).\n", books[i].name, books[i].borrower, days_left);
}
}
int main() {
BOOK library[] = {
{"Introduction to C Programming", "John Smith", "Publisher A", "ISBN123", "Programming", "Alice", "2022-01-01", "2022-02-01"},
{"Learning Python", "Jane Doe", "Publisher B", "ISBN345", "Programming", "Bob", "2022-01-03", "2022-02-03"},
{"Pride and Prejudice", "Jane Austen", "Publisher C", "ISBN678", "Fiction", "Carol", "2022-01-05", "2022-02-05"},
{"The History of China", "David Lee", "Publisher D", "ISBN910", "History", "", "2022-01-07", "2022-02-07"}
};
int num_books = sizeof(library) / sizeof(BOOK);
int warning_days = 5;
print_books_near_due(library, num_books, warning_days);
return 0;
}
```
该函数依赖于 `days_until_due` 函数,该函数接受一个日期字符串和一个警告天数,并返回收到警告时距离到期的天数。主函数中的 `print_books_near_due` 函数检查每个书籍的归还日期,并打印将到期或已到期的书籍。在此函数中,我们忽略未被借阅的书籍。
阅读全文