c 282例:渔夫打鱼问题

问题描述:

    如果一渔夫两从2011年1月1日开始每三天打一次渔,两天晒一次网。编程实现当输入2011年1月1日后的任意一天输出该渔夫是在大雨还是在晒网。

代码如下:

#include<stdio.h>

int leap(int year)//判断闰年
{
    if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}

int Allday(int y, int m, int d)//返回距离2011年1月1号总共多少天
{
    static int Y = 2011, M = 1, D = 1;
    int mun = 0,temp;
    int a[12] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };//闰年每月天数
    int a2[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };//平年每月天数
    temp = y - Y;
    for (int i = 0; i < temp; i++)
    {
        if (leap(Y + 1) ==1 )
        {
            mun += 366;
        }
        else
        {
            mun += 365;
        }
    }
    if (leap(y) == 1)
    {
        for (int i = 0; i < m-1; i++)//是求前m-1个月的总天数
        {
            mun += a[i];
        }
    }
    else
    {
        for (int i = 0; i < m-1; i++)
        {
            mun += a2[i];
        }
    }
    return  mun + d;
}

int main()
{
    printf("请输入年月日!\n例如2012 1 1\n");
    int y, m, d,tempp;
    scanf_s("%d %d %d", &y, &m, &d);
    tempp=Allday(y, m, d);
    if (tempp % 5 <= 3 && tempp % 5>0)//注意判断条件,只有余数是1,2,3的时候渔夫才出去打鱼。余数有可能等于0。
    {
        printf("渔夫很勤劳,打鱼去了!!!\n");

    }
    else
    {
        printf("渔夫休息了,在家晒网 !!!\n");
    }
 
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值