有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD
每组数据输出一行,即日期差值
链接:https://www.nowcoder.com/questionTerminal/ccb7383c76fc48d2bbc27a2a6319631c 来源:牛客网 #include<stdio.h> #define leap(x) (x%400==0||(x%4==0&&x%100!=0)?1:0) #define Abs(x) ((x)>0?(x):-(x)) typedef struct date { int y, m, d; }Date; const int yd[2][13]={{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}}; int days(Date x) { int sum=0, i; int y=x.y, m=x.m, d=x.d; for(i=0; i<y; i++) { if(leap(i)) { sum+=366; } else { sum+=365; } } for(i=1; i<m; i++) { sum+=yd[leap(y)][i]; } sum+=d; return sum; } int main(void) { Date a, b; while(scanf("%4d%2d%2d", &a.y, &a.m, &a.d)!=EOF) { scanf("%4d%2d%2d", &b.y, &b.m, &b.d); printf("%d\n", Abs(days(a)-days(b))+1); } return 0; }
原文:https://www.cnblogs.com/JAYPARK/p/10355040.html