Description
时光匆匆,日子一天天的过去,一个百岁老人,所活天数也不过36500多天。现在,小明突然想知道自己已经活了几天。
已知小明的出生日期和现在的日期,请你帮助小明计算出他已活的天数。
如,出生日期为2011-10-01,现在是2011-10-27,则已活的天数为26天。
Input
2个日期d1,d2(之间以1个空格间隔,且d2>d1),分别表示小明的出生日期和现在的日期,形式都为yyyy-mm-dd。
保证输入的日期合法,而且在[1000-01-01,9999-12-31]范围内。
Output
输出小明已活的天数。
Sample Input 1?
2011-10-01 2011-10-27
Sample Output 1
26
Sample Input 2?
2008-02-01 2011-10-27
Sample Output 2
1364
#include <stdio.h>
#include<math.h>
#include<string.h>
void plus(int y1,int m1,int d1,int y2,int m2,int d2)
{
int day = 0,t1,t2;//t1,t2分别表示起始与截止的月份
int mday[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
for (int i = y1; i <= y2; i++)
{
if (i == y1) t1 = m1;//如果是起始年,让起始月份等于输入月份
else t1 = 1;
if (i == y2) t2 = m2;//如果是截止年,让截止月份终于输入月份
else t2 = 12;
for (int k = t1; k <= t2; k++)
{
if (i % 400 == 0 || (i % 100 != 0 && i % 4 == 0))//判断是否是闰年
mday[2] = 29;
else mday[2] = 28;
if (m1 == m2 && y1 == y2)//如果同年同月
day += d2 - d1;
else
{
if (i == y1 && k == m1)//如果是起始年月,让起始的日期等于输入
day += mday[k] - d1;
else if (i == y2 && k == m2)//同理
day += d2;
else day += mday[k];
}
}
}
printf("%d", day);
}
int main()
{
int y1, y2, m1, m2, d1, d2,day1=0,day2=0,day=0;
scanf("%d-%d-%d %d-%d-%d", &y1, &m1, &d1, &y2, &m2, &d2);
plus(y1, m1, d1, y2, m2, d2);
return 0;
}
|