用C语言编写程序解决问题:一个渔夫从2023年1月1日开始每三天打一次渔,两天晒 一次网。编程实现当输入2023年1月1日之后的任意一天, 输出该渔夫是打渔还是晒网
时间: 2024-02-25 08:57:32 浏览: 103
好的,这是一个比较简单的问题。以下是用 C 语言编写的程序,可以实现该功能:
```c
#include <stdio.h>
int main() {
int year, month, day;
printf("请输入年份:");
scanf("%d", &year);
printf("请输入月份:");
scanf("%d", &month);
printf("请输入日期:");
scanf("%d", &day);
int days = 0;
days += (year - 2023) * 365;
days += (year - 2021) / 4; // 2021年是闰年,计算跨越的闰年数量
switch (month) {
case 12: days += 30;
case 11: days += 31;
case 10: days += 30;
case 9: days += 31;
case 8: days += 31;
case 7: days += 30;
case 6: days += 31;
case 5: days += 30;
case 4: days += 31;
case 3:
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
days += 29;
} else {
days += 28;
}
case 2: days += 31;
case 1: days += day;
}
int days_from_start = days - 2; // 从2023年1月1日开始算起,第一次打渔还需等待两天
if (days_from_start % 5 < 3) {
printf("今天打渔\n");
} else {
printf("今天晒网\n");
}
return 0;
}
```
程序首先会让用户输入日期,然后根据输入的年月日计算出该日期与 2023 年 1 月 1 日之间相差的天数,最后根据问题描述中的规则判断渔夫是打渔还是晒网。
需要注意的是,程序中闰年的判断采用了“普通闰年”的规则,即年份能够被 4 整除但不能被 100 整除,或者能够被 400 整除。如果题目中有其他规定,需要根据具体情况进行修改。
阅读全文