机试教程:时间问题

来源:互联网 发布:执业医师考试网络辅导 编辑:程序博客网 时间:2024/05/09 14:19
#include <stdio.h>#include <stdlib.h>#include <math.h>#define  ISYEARP(x) ((x%100!=0 && x%4==0 )||( x%400==0))?1:0int 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};int dayofyear[2]={365,366};long yeararry[50001];typedef struct date{int year;int month;int day;}date;void countyear(){int i;    yeararry[1]=365;    for(i=1;i<5001;i++){yeararry[i+1]=yeararry[i]+dayofyear[ISYEARP(i)];}}long countday(date date1){long cnt=0;int i=0;cnt=cnt+yeararry[date1.year];for(i=1;i<=date1.month;i++){cnt=cnt+dayofMonth[i-1][ISYEARP(date1.year)];}cnt=cnt+date1.day;return cnt;}void main(){date date1,date2;long day1,day2;    countyear();while(scanf("%4d%2d%2d",&date1.year,&date1.month,&date1.day)!=EOF){scanf("%4d%2d%2d",&date2.year,&date2.month,&date2.day);day1=countday(date1);day2=countday(date2);printf("%d",abs(day1-day2)+1);}}
统一基准,然后预处理!
原创粉丝点击