/* Same as struct1.c, but uses struct. */ #include struct ymd { int year; int month; int day; } ; int mjd(struct ymd date) { int y = date.year; int m = date.month - 1; int d = date.day - 678882; d += 146097 * (y / 400); y %= 400; if (m >= 2) m -= 2; else { m += 10; --y; } y += (m / 12); m %= 12; if (m < 0) { m += 12; --y; } d += (306 * m + 5) / 10; d += 146097 * (y / 400); y %= 400; if (y < 0) { y += 400; d -= 146097; } d += (y & 3) * 365; y >>= 2; d += 1461 * (y % 25); y /= 25; d += (y & 3) * 36524; return d; } int main(void) { struct ymd date1; struct ymd date2; scanf("%d%d%d",&date1.year,&date1.month,&date1.day); scanf("%d%d%d",&date2.year,&date2.month,&date2.day); printf("There are %d days between %d-%02d-%02d and %d-%02d-%02d.\n" ,mjd(date2) - mjd(date1) ,date1.year,date1.month,date1.day ,date2.year,date2.month,date2.day ); return 0; }