【九度 03】两个日期之间的天数

网友投稿 572 2022-10-10

【九度 03】两个日期之间的天数

【九度 03】两个日期之间的天数

【九度 03】两个日期之间的天数

文章目录

​​【九度 03】两个日期之间的天数​​​​一、题意​​​​二、解答过程​​

一、题意

二、解答过程

#include #define ISYEAP(x) x%100!=0&&x%4==0||x%400==0?1:0//判断是否是闰年,闰年结果为1,不是闰年结果是0int dayOfMonth[13][2]={//预存每月的天数,二月是特殊的 0,0,//0月... 31,31, 28,29,//2月 31,31, 30,30, 31,31, 30,30, 31,31, 31,31, 30,30, 31,31, 30,30, 31,31};struct Date{//日期类,方便日期的推移 int Day; int Month; int Year; void nextDay()//计算下一天的日期 { Day++; if(Day>dayOfMonth[Month][ISYEAP(Year)]) { Day=1; Month++;//进入下一个月 if(Month>12)//月数超过12 { Month=1; Year++;//进入下一年 } } }};int buf[5001][13][32];//保存预处理的天数int Abs(int x){ return x<0?-x:x;}int main() { Date tmp; int cnt=0;//天数计数 tmp.Day=1; tmp.Month=1; tmp.Year=0;//初始化日期类对象为0年1月1日 while(tmp.Year!=5001)//日期不超过5000年 { buf[tmp.Year][tmp.Month][tmp.Day]=cnt;//将该日与0年1月1日的天数差保存起来 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;}

2][m2][d2]-buf[y1][m1][d1])+1);//用预处理的数据计算日期差 } return 0; }

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【九度 02】N个学生数据成绩排序
下一篇:骆驼小店-基于Python/Django的微信小程序商城
相关文章

 发表评论

暂时没有评论,来抢沙发吧~