打鱼还是晒网

本文介绍了一个基于C语言实现的日期计算程序,该程序能够根据输入的日期判断一个人在三天打鱼两天晒网的生活模式下,是在打鱼还是在晒网。通过计算指定日期距离1990年1月1日的总天数,并利用闰年和平年的不同天数进行精确计算。

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

中国有句俗语叫"三天打鱼两天晒网"。某人从1990年1月1日起开始"三天打鱼两天晒网",问这个人在以后的某一天中是"打鱼"还是"晒网"。
样例输入:2020 4 1
样例输出:他在晒网

#include<stdio.h>
/*定义日期结构体*/
typedef struct date {
    int year;
    int month;
    int day;
}DATE;
int countDay(DATE currentDay);  /*函数声明*/
int runYear(int year);  /*函数声明*/
int main()
{
    DATE today;  /*指定日期*/
    int totalDay;  /*指定日期距离1990年1月1日的天数*/
    int result;  /*totalDay对5取余的结果*/
    /*输入指定日期,包括年,月,日*/
    scanf("%d%d%d", &today.year, &today.month, &today.day); 
    totalDay=countDay(today);  /*求出指定日期距离1990年1月1日的天数*/
    /*天数%5,判断输出打鱼还是晒网*/
    result=totalDay%5; 
    if(result>0 && result<4)
        printf("他在打鱼");
    else
        printf("他在晒网");
    return 0;
}
/*判断是否为闰年,是返回1,否返回0*/
int runYear(int year)
{
    if( (year%4==0 && year%100!=0) || (year%400==0) )  /*是闰年*/
        return 1;
    else
        return 0;
}
/*计算指定日期距离1990年1月1日的天数*/
int countDay(DATE currentDay)
{
    int perMonth[13]={0,31,28,31,30,31,30,31,31,30,31,30};  /*每月天数数组*/
    int totalDay=0,year,i;
    /*求出指定日期之前的每一年的天数累加和*/
    for(year=1990; year<currentDay.year; year++)
    {
        if(runYear(year))  /*判断是否为闰年*/
            totalDay=totalDay+366;
        else
            totalDay=totalDay+365;
    }
    /*如果为闰年,则二月份为29天*/
    if(runYear(currentDay.year))
        perMonth[2]+=1;
    /*将本年内的天数累加到totalDay中*/
    for(i=0; i<currentDay.month; i++)
        totalDay+=perMonth[i];
    /*将本月内的天数累加到totalDay中*/
    totalDay+=currentDay.day;
    /*返回totalDay*/
    return totalDay;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

【执珪】瑕瑜·夕环玦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值