c语言如果一个渔夫从2011年1月1日开始每三天打一次渔,两天晒一次网,编程实现当输入2011年1月1日以后的任意一天,输出该渔夫是在打鱼还是在晒网。(可使用数组简化程序)
时间: 2024-12-28 08:40:36 浏览: 9
在C语言中,我们可以创建一个简单的数组来表示渔夫的工作模式,数组分别存储"打渔"和"晒网"的状态。假设我们只关注每个月的天数,并且每个月都按照实际天数循环。以下是基本的实现步骤:
```c
#include <stdio.h>
#include <stdbool.h>
// 定义工作周期数组
const char* work_days[] = {"打渔", "晒网", "打渔", "晒网", ...}; // 循环直到2011年12月31日
int main() {
int current_year = 2011;
int current_month = 1; // 从1月开始
int current_day = 1; // 初始化到1日
int days_in_month[13] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // 闰年假设
while (current_day <= 365) { // 假设2011年不是闰年,总共有365天
if (current_year == 2011 && current_month == 2) {
days_in_month[current_month - 1] = 29; // 调整2月份为闰年的天数
}
if (days_in_month[current_month - 1] >= current_day) { // 检查当前日期是否在本月范围内
printf("日期:%d, 当前状态:%s\n", current_day, work_days[current_day % 3]);
} else {
printf("超出2011年范围或错误的日期。\n");
break;
}
current_day++; // 移动到下一天
if (current_day > days_in_month[current_month - 1]) { // 到了月底,移动到下一个月
current_day = 1;
current_month++;
if (current_month > 12) { // 如果超过12月,则回到一月
current_month = 1;
current_year++;
}
}
}
return 0;
}
```
在这个程序中,我们首先初始化了渔夫的工作日程数组,然后通过一个while循环遍历每一天。对于每一天,我们检查当前年份、月份和日期,如果这一天在给定的年份内,我们就打印出渔夫当天的工作状态。
阅读全文