问题描述 中国有句俗语叫“三天打鱼两天晒网”,也就是连续打鱼三天后,休息两天,然后再打鱼三天……。某人从2000年1月1日起开始“三天打鱼两天晒网”,输入一个2000年1月1日以后的有效日期,判断这个人在这一天是“打鱼”,还是“晒网”。 输入描述 三个以空格隔开的整数,表示日期中的年、月和日。 输出描述 “打鱼”或“晒网” 样例输入 2000 1 4 样例输出 晒网用C语言怎么编写
时间: 2024-02-06 14:02:02 浏览: 133
以下是一种可能的 C 语言实现方式:
```c
#include <stdio.h>
int is_fishing_day(int year, int month, int day) {
// 计算距离 2000 年 1 月 1 日的天数
int days = (year - 2000) * 365 + (year - 2001) / 4; // 不考虑闰年
if (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0) && month <= 2) {
// 如果是闰年并且在 2 月及以前
days--; // 减去一天
}
int month_days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
for (int i = 0; i < month - 1; i++) {
days += month_days[i]; // 加上每个月的天数
}
days += day - 1; // 加上当前月的天数
return (days % 5 < 3); // 判断是“打鱼”还是“晒网”
}
int main() {
int year, month, day;
scanf("%d %d %d", &year, &month, &day);
if (is_fishing_day(year, month, day)) {
printf("打鱼\n");
} else {
printf("晒网\n");
}
return 0;
}
```
其中,`is_fishing_day()` 函数用于判断输入的日期是“打鱼”还是“晒网”,返回值为 1 表示“打鱼”,为 0 表示“晒网”。该函数首先计算距离 2000 年 1 月 1 日的天数,然后根据“三天打鱼两天晒网”的周期判断当前日期是不是“打鱼”日。主函数中读入输入日期,并根据 `is_fishing_day()` 的返回值输出结果。
阅读全文