“三天打鱼,两天晒网“的c语言实现

这篇博客介绍了一个计算日期对应渔夫活动(打鱼或晒网)的算法。通过接收用户输入的年、月、日,计算从2000年1月1日到该日期的总天数,然后根据5天一周期的规律判断状态。如果余数为1到3,则渔夫在打鱼;否则在晒网。代码中还包含了一个判断闰年的辅助函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

中国有句俗话叫“三天大鱼,两天晒网”,某渔夫从2000年1月1日开始“三天打鱼,两天晒网”,问该渔夫在以后的某一天中是在“打鱼”还是在“晒网”

需求:

用户输入某年某月某日,判断出该日期是在打鱼还是在晒网

 

思路:

1、接收键盘输入的日期

2、计算从2000年1月1日到输入的日期一共是多少天

3、打鱼+晒网的周期为5天,所以可以将计算出的天数用5去除

4、根据余数判断渔夫的状态,余数为1、2、3表示在打鱼,其余则是晒网

 

代码实现:

int main(){
    int mdays[] = {31,28,31,30,31,30,31,31,30,31,30,31};
    int year,month,days,totaldays=0;
    int i;
    printf("请输入要查询的年、月、日:");
    scanf("%d %d %d",&year,&month,&days);
    for(i=2000; i<year; i++){
        totaldays += leapyear(i);
    }
    for(i=0; i< month-1;i++){
        totaldays += mdays[i];
    }
    totaldays += days;
    if(leapyear(year)==366){
        totaldays ++;
    }
    i = totaldays%5;

    printf("%d\n",totaldays);
    if(i>=1 && i<=3){
        printf("渔夫在打鱼\n");
    }else{
        printf("渔夫在晒网\n");
    }


}

int leapyear(int year){
    int days=365;
    if((year%4==0 && year%100!=0) || year % 400 == 0)
        days = 366;
    return days;
}

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值