【考研每日一题13】今年的第几天?

原题地址:牛客网

题目描述:

输入年、月、日,计算该天是本年的第几天。

输入描述:

包括三个整数年(1<=Y<=3000)、月(1<=M<=12)、日(1<=D<=31)。

输出描述:

输入可能有多组测试数据,对于每一组测试数据,
输出一个整数,代表Input中的年、月、日对应本年的第几天。

输入

1990 9 20
2000 5 1

输出

263
122

分析:

判断闰年先,

普通闰年:公历年份是4的倍数的,一般是闰年。(如2004年就是闰年);

世纪闰年:公历年份是整百数的,必须是400的倍数才是闰年(如1900年不是世纪闰年,2000年是世纪闰年);

然后按照闰年2月29天,其他不变。

按照月每日相加即可。

代码:

#include<iostream>
using namespace std;
int mon[12]={31,28,31,30,31,30,31,31,30,31,30,31};
void jud(int n)
{
    if(n%100==0&&n%400==0)mon[1]=29;
    else if(n%4==0)mon[1]=29;
    else mon[1]=28;
}
int main()
{
    int y,m,d;
    while(cin>>y>>m>>d)
    {
        jud(y);
        int ans=0;
        for(int i=0;i<m-1;i++)
        {
            ans=ans+mon[i];
        }
        ans=ans+d;
        cout<<ans<<endl;
    }
    return 0;
}

 

2020.4.1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章