某渔人从y年a月b日起,实行“三天打鱼两天晒网”,判断同年c月d日(c>=a,若c==a,则d>=b)他在打鱼(输出1)还是在晒网(输出0)。y、a、b和c、d从键盘输入,格式为y-m-d和m-d。要求编写函数: ⑴ int leap( int y ); y年为闰年,则返回1,否则返回0。 ⑵ int days( int y, int m, int d ); 返回y年m月d日是该年的第几天。
时间: 2024-03-25 13:41:44 浏览: 93
渔人码头电梯招标技术规格书.pdf
好的,我知道了。下面是代码实现:
```python
# 判断是否为闰年
def leap(y):
if y % 400 == 0 or (y % 4 == 0 and y % 100 != 0):
return 1
else:
return 0
# 计算某一天是该年的第几天
def days(y, m, d):
month_days = [31,28,31,30,31,30,31,31,30,31,30,31]
if leap(y):
month_days[1] = 29
res = sum(month_days[:m-1]) + d
return res
# 判断打鱼还是晒网
def fish_or_not(y, a, b, c, d):
total_days = days(y, 12, 31) # 计算该年总共有多少天
start_day = days(y, a, b) # 计算渔人开始打鱼的那一天是该年的第几天
end_day = days(y, c, d) # 计算要判断的那一天是该年的第几天
interval = (end_day - start_day) % 5 # 计算打鱼和晒网的间隔
if interval < 3:
return 1 # 打鱼
else:
return 0 # 晒网
# 测试
date1 = input("请输入开始打鱼的日期(格式为y-m-d):")
date2 = input("请输入要判断的日期(格式为m-d):")
y, a, b = map(int, date1.split("-"))
c, d = map(int, date2.split("-"))
result = fish_or_not(y, a, b, c, d)
if result == 1:
print("在打鱼")
else:
print("在晒网")
```
注意:代码中的 `sum(month_days[:m-1])` 表示该年前面的月份所对应的天数之和,例如 `month_days[:2]` 表示前两个月份,即 `[31,28]`,而 `sum(month_days[:2])` 就等于 `31+28=59`。
阅读全文