描述
给定两个日期,计算相差的天数。比如2010-1-1和2010-1-3相差2天。
输入
共两行:
第一行包含三个整数startYear,startMonth,startDay,分别是起始年、月、日。
第二行包含三个整数endYear,endMonth,endDay,分别是结束年、月、日。
相邻两个整数之间用单个空格隔开。
年份范围在1~3000。保证日期正确且结束日期不早于起始日期。
输出
输出一个整数,即是两个日期相差的天数。
样例输入
2008 1 1
2009 1 1
样例输出
366
#include <iostream>
#include <cstdio>
using namespace std;
int monthdays[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
bool isLeap(int year);
int getDays(int year,int month,int day);
int main()
{
int startYear, startMonth, startDay, endYear, endMonth, endDay, days;
scanf("%d %d %d\n%d %d %d",&startYear, &startMonth, &startDay, &endYear, &endMonth, &endDay);
days = getDays(endYear, endMonth, endDay)-getDays(startYear, startMonth, startDay);
printf("%d",days);
return 0;
}
bool isLeap(int year)
{
if(year%4==0 && (year%100!=0 || year%400==0))
{
return true;
}
return false;
}
int getDays(int year,int month,int day)
{
int days=0;
for(int i=1;i<year;i++)
{
if(isLeap(i))
{
days += 366;
}else
{
days += 365;
}
}
for(int i=1;i<month;i++)
{
days+=monthdays[i-1];
}
if(month > 2 && isLeap(year))
{
days++;
}
days += day;
return days;
}