Codeup 1928 日期差值

来源:互联网 发布:win10安装网络打印机 编辑:程序博客网 时间:2024/06/05 16:18

Codeup 1928: 日期差值
时间限制: 1 Sec 内存限制: 32 MB
题目描述
有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天。

输入
有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD

输出
每组数据输出一行,即日期差值

样例输入
20130101
20130105
样例输出
5
提示:
公元年数可被4整除为闰年,但是正百的年数必须是可以被400整除的才是闰年。其他都是平年。闰年的2月有29天。例如:1996年是闰年,2000年是闰年,而平年二月有28天,1900年不是闰年,1997年是平年

//以下为测试输入法#include<stdio.h>  int main(void){    int N;    char C;    scanf("%d %c",&N,&C);    printf("%d %c\n",N,C);} 

以下为本题解:

#include<stdio.h>#define EOF 0int month[12][2]={{31,31},{28,29},{31,31},{30,30},{31,31},{30,30},{31,31},{31,31},{30,30},{31,31},{30,30},{31,31} };int isLeap(int year){    if(((year%4==0)&&(year%100!=0))||((year%100==0)&&(year%400==0)))        return 1;  //是闰年    else        return 0;  //不是闰年}int main(void){    int y1,m1,d1;    int y2,m2,d2;    int year1,year2;    int day=1;    while(scanf("%d %d",&year1,&year2)!=EOF)    {        if(year1>year2)        {            int temp=year1;            year1=year2;            year2=temp;        }        y1=year1/10000; m1=(year1%10000)/100; d1=year1%100;        y2=year2/10000; m2=(year2%10000)/100; d2=year2%100;        while(!(y1==y2&&m1==m2&&d1==d2))        {            ++day;            ++d1;            if(d1==month[m1][isLeap(y1)]+1)            {                ++m1;                d1=1;            }            if(m1==13)            {                ++y1;                m1=1;            }        }        printf("%d\n",day);    }    return 0;}
原创粉丝点击