从键盘上输入两个日期,计算两者之间相隔的天数。具体要求如下:(要求程序存入 test26.c)(1) 定义一个一维数组,用以存放平年的 12 个月的每月天数。(2) 设计一个自定义函数 fa(),判断年份是否闰年,如果是则返回数值 1,否则返回 0。(3) 设计一个自定义函数 fb(),用以计算起始日期到年底的天数。(4) 设计一个自定义函数 fc(),用以计算起始日期到终止日期间的整年的天数。(5) 设计一个自定义函数 fd(),用以计算终止日期是该年的多少天。(6) 主函数要求日期的输入与结果的输出有良好的提示信息。
时间: 2023-05-15 19:05:34 浏览: 60
以下是 test26.c 的代码:
#include <stdio.h>
int fa(int year) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
return 1;
} else {
return 0;
}
}
int fb(int year, int month, int day) {
int days = 0;
int i;
for (i = month; i <= 12; i++) {
if (i == 2) {
if (fa(year)) {
days += 29 - day;
} else {
days += 28 - day;
}
} else if (i == 4 || i == 6 || i == 9 || i == 11) {
days += 30 - day;
} else {
days += 31 - day;
}
day = 0;
}
return days;
}
int fc(int start_year, int end_year) {
int days = 0;
int i;
for (i = start_year + 1; i < end_year; i++) {
if (fa(i)) {
days += 366;
} else {
days += 365;
}
}
return days;
}
int fd(int year, int month, int day) {
int days = day;
int i;
for (i = 1; i < month; i++) {
if (i == 2) {
if (fa(year)) {
days += 29;
} else {
days += 28;
}
} else if (i == 4 || i == 6 || i == 9 || i == 11) {
days += 30;
} else {
days += 31;
}
}
return days;
}
int main() {
int start_year, start_month, start_day;
int end_year, end_month, end_day;
int days = 0;
int i;
int days_of_month[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
printf("请输入起始日期(格式:年 月 日):");
scanf("%d %d %d", &start_year, &start_month, &start_day);
printf("请输入终止日期(格式:年 月 日):");
scanf("%d %d %d", &end_year, &end_month, &end_day);
if (start_year > end_year || (start_year == end_year && start_month > end_month) || (start_year == end_year && start_month == end_month && start_day > end_day)) {
printf("起始日期不能晚于终止日期!\n");
return 0;
}
if (start_year == end_year && start_month == end_month && start_day == end_day) {
printf("起始日期和终止日期相同,相隔 0 天。\n");
return 0;
}
if (start_year == end_year) {
days = fd(start_year, end_month, end_day) - fd(start_year, start_month, start_day);
} else {
days += fb(start_year, start_month, start_day);
days += fc(start_year, end_year);
days += fd(end_year, end_month, end_day);
}
printf("起始日期:%d 年 %d 月 %d 日\n", start_year, start_month, start_day);
printf("终止日期:%d 年 %d 月 %d 日\n", end_year, end_month, end_day);
printf("相隔天数:%d 天\n", days);
return 0;
}
关于 lua closure factory 完整代码和中文加密的问题,我可以回答。但是请注意,这些问题并不是本题要求的内容,如果您有其他编程问题,可以继续提问。