题目:
输入日期格式:YYYYMMDD,求与20190205相隔的天数。
例1:
输入:20190208
输出:3
例2:
输入:20180228
输出:-342
#include<bits/stdc++.h>
using namespace std;
bool isrun(int year)
{
if((year%4==0 && year%100!=0)||year%400==0) return 1;
else return 0;
}
int mdays[20]={31,28,31,30,31,30,31,31,30,31,30,31};
int main()
{
//判断与相隔天数2019 02 05
int year,month,day,ans=0;
scanf("%4d%2d%2d",&year,&month,&day);
while(year>2019)
{
year--;
if(isrun(year))
ans+=366;
else
ans+=365;
}
while(year<2019)
{
if(isrun(year))
ans-=366;
else
ans-=365;
year++;
}
//year已经2019年了
while(month>2)
{
month--;
if(month!=2)
{
ans+=mdays[month-1];
}
else{//month==2
if(isrun(year))
ans+=29;
else
ans+=28;
}
}
if(month==1)
{
month++;
ans-=31;
}
//month已经2月了
ans+=day-5;
cout<<ans<<endl;
return 0;
}