c++ 给定一个日期,输出这个日期是该年的第几天

Description

给定一个日期,输出这个日期是该年的第几天。

Input

输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input
,另外,可以向你确保所有的输入数据是合法的。

Output

对于每组输入数据,输出一行,表示该日期是该年的第几天。

Sample Input

1985/1/20
2006/3/12

Sample Output

20
71

分析
这个题很水,但是呢,我老是忘记每个月有多少天
int mon[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
31天的月份 1 3 5 7 8 10 12
2月如果是闰年就是29天
2月不是闰年就是28天
AC

#include<bits/stdc++.h>
using namespace std;
int mon[13]={
   0,31,28,31,30,31,30,31,31,30,31,30,31};
int main()
{
   
    int a,b,c;
    while(~scanf("%d/%d/%d",&a,&b,&c))
    {
   
        if(a%4==0&&a%100!=0||a%400==0)
        {
   
            mon[2]=29;
        }
        else
        {
   
            mon[2]=28;
        }
        int sum=0;
        for(int i=1;i<b;i++)
        {
   
            sum+=mon[i];
        }
        sum+=c;
        cout<<sum<<endl;
    }

    return 0;
}

====================== 2020年1月15日更新 ============================
评论区一位大佬提出了关于泽勒的一致性算法,研究了一下,这里就提供给大家:

泽勒一致性是由克里斯汀-泽勒开发的用于计算某天是星期几的计算公式。计算公式如下:

  h=(q+[26*(m+1)/10]
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一百个Chocolate

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

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

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

打赏作者

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

抵扣说明:

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

余额充值