题目1096:日期差值

来源:互联网 发布:专业美工 编辑:程序博客网 时间:2024/05/17 13:12

注意:日期输入技巧


#include<iostream>#include<stdio.h>using namespace std; #define ISYEAR(x) (x%100 !=0 && x%4 ==0)|| x%400==0?1:0 int dayOfMonth[13][2]={    0,0,    31,31,    28,29,    31,31,    30,30,    31,31,    30,30,    31,31,    31,31,    30,30,    31,31,    30,30,    31,31};//每月的天数 class Date{public:    int Day;    int Month;    int Year;    //计算下一天的日期    void nextDay()    {        Day++;        if(Day > dayOfMonth[Month][ISYEAR(Year)])        {            Day = 1;            Month ++;            if(Month >12)            {                Month =1;                Year ++;            }        }    }}; int buf[5001][13][32];//空着了0月0日,方便操作 int Abs(int x){    return x <0 ?-x :x;} int main(){    //测试ISYEAR(x)函数    //if(ISYEAR(2012))    //{    //  cout << "Hello world" << endl;    //}    Date tmp;//存储日期    int cnt =0;//记录天数    tmp.Day = 1;    tmp.Month = 1;    tmp.Year = 0; //初始化日期为0年1月1日    while(tmp.Year !=5001)    {        buf[tmp.Year][tmp.Month][tmp.Day]=cnt;        tmp.nextDay(); //计算下一天日期        cnt ++; //计数器累加,与原点日期的间隔    }    int d1,m1,y1;    int d2,m2,y2;     while(scanf("%4d%2d%2d",&y1,&m1,&d1)!=EOF)    {        scanf("%4d%2d%2d",&y2,&m2,&d2);//输入两个计算的日期,输入技巧        printf("%d\n",Abs(buf[y2][m2][d2] - buf[y1][m1][d1])+1);    }     return 0;}/**************************************************************    Problem: 1096    User: itswyy    Language: C++    Result: Accepted    Time:20 ms    Memory:9644 kb****************************************************************/

0 0
原创粉丝点击