三天打鱼两天晒网。题目描述 题目内容:中国有句俗语:“三天打鱼两天晒网”,某人从1990年1月1日起开始“三天打鱼两天晒网”。问这个人在以后的某一天是在“打鱼”还是在“晒网”? 输入样例:1990-1-3 输出样例:他在打鱼 输入样例:2018-11-11 输出样例:他在晒网
时间: 2024-02-22 15:00:08 浏览: 92
根据题目描述,我们可以得知这个人是按照“三天打鱼两天晒网”的规律进行的工作。那么我们可以先计算出从1990年1月1日到给定日期的总天数,然后再对5取模,如果余数是1、2、3,则这个人在“打鱼”,如果余数是4、0,则这个人在“晒网”。
以下是Python代码实现:
```python
import datetime
def is_fishing_day(date_str):
date = datetime.datetime.strptime(date_str, '%Y-%m-%d')
start_date = datetime.datetime(1990, 1, 1)
days = (date - start_date).days
mod = days % 5
if mod in [1, 2, 3]:
return '他在打鱼'
else:
return '他在晒网'
# 测试样例
print(is_fishing_day('1990-1-3')) # 他在打鱼
print(is_fishing_day('2018-11-11')) # 他在晒网
```
输出结果:
```
他在打鱼
他在晒网
```
相关问题
编写一个C语言程序:三天打鱼两天晒网。题目描述 题目内容:中国有句俗语:“三天打鱼两天晒网”,某人从1990年1月1日起开始“三天打鱼两天晒网”。问这个人在以后的某一天是在“打鱼”还是在“晒网”? 输入样例:1990-1-3 输出样例:他在打鱼
以下是一个简单的 C 语言程序,可以实现上述题目的要求:
```c
#include <stdio.h>
int main()
{
int year, month, day;
int days_since_1990_01_01;
int remainder;
// 读入日期
printf("请输入日期(格式为 yyyy-mm-dd):");
scanf("%d-%d-%d", &year, &month, &day);
// 计算从 1990 年 1 月 1 日到目标日期共经过了多少天
days_since_1990_01_01 = (year - 1990) * 365 + (year - 1990) / 4;
switch (month - 1) {
case 11: days_since_1990_01_01 += 30;
case 10: days_since_1990_01_01 += 31;
case 9: days_since_1990_01_01 += 30;
case 8: days_since_1990_01_01 += 31;
case 7: days_since_1990_01_01 += 31;
case 6: days_since_1990_01_01 += 30;
case 5: days_since_1990_01_01 += 31;
case 4: days_since_1990_01_01 += 30;
case 3: days_since_1990_01_01 += 31;
case 2: days_since_1990_01_01 += 28;
case 1: days_since_1990_01_01 += 31;
}
days_since_1990_01_01 += day - 1;
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
// 闰年 2 月有 29 天
if (month > 2) {
days_since_1990_01_01++;
}
}
// 对 5 取模,判断是在“打鱼”还是在“晒网”
remainder = days_since_1990_01_01 % 5;
if (remainder == 1 || remainder == 2 || remainder == 3) {
printf("他在打鱼\n");
} else {
printf("他在晒网\n");
}
return 0;
}
```
在这个程序中,我们先通过 `scanf()` 函数读入了目标日期,然后计算从 1990 年 1 月 1 日到目标日期共经过了多少天,最后对 5 取模,判断是在“打鱼”还是在“晒网”。注意在计算经过的天数时需要考虑闰年的情况,这里使用了一个简单的判断方法。
三天打鱼两天晒网。c语言题目描述 题目内容:中国有句俗语:“三天打鱼两天晒网”,某人从1990年1月1日起开始“三天打鱼两天晒网”。问这个人在以后的某一天是在“打鱼”还是在“晒网”? 输入样例:1990-1-3 输出样例:他在打鱼 输入样例:2018-11-11 输出样例:他在晒网
以下是C语言实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int is_fishing_day(char *date_str) {
struct tm start_time = {0};
struct tm input_time = {0};
time_t start, input;
// 将日期字符串转换为struct tm类型的时间
strptime(date_str, "%Y-%m-%d", &input_time);
// 设置起始日期为1990年1月1日
start_time.tm_year = 90;
start_time.tm_mon = 0;
start_time.tm_mday = 1;
// 将起始日期转换为time_t类型的时间
start = mktime(&start_time);
input = mktime(&input_time);
// 计算天数差
int days = (int)(input - start) / (60 * 60 * 24);
// 判断是打鱼还是晒网
int mod = days % 5;
if (mod == 1 || mod == 2 || mod == 3) {
return 1;
} else {
return 0;
}
}
int main() {
char date_str[20];
printf("请输入日期(格式为YYYY-MM-DD):");
scanf("%s", date_str);
int is_fishing = is_fishing_day(date_str);
if (is_fishing) {
printf("他在打鱼\n");
} else {
printf("他在晒网\n");
}
return 0;
}
```
输入样例:
```
请输入日期(格式为YYYY-MM-DD):1990-1-3
```
输出样例:
```
他在打鱼
```
输入样例:
```
请输入日期(格式为YYYY-MM-DD):2018-11-11
```
输出样例:
```
他在晒网
```
阅读全文