#include <stdio.h> #include <stdbool.h> struct date { int year; int month; int day; }; int f(struct date d) { if(d.month<=2) return d.year-1; else return d.year; } int g(struct date d) { if(d.month<=2) return d.month+13; else return d.month+1; } int calculateN(struct date d) { int N; N=1461*f(d)/4+153*g(d)/5+d.day; return N; } int calculateDay(struct date d1,struct date d2) { int day,d1N,d2N; d1N=calculateN(d1); d2N=calculateN(d2); day=d1N-d2N; if(day<0) day=-day; return day; } int main(void) { struct date d1,d2; printf("Please enter two date(YYYY MM DD): \n"); printf("The first: "); scanf("%i %i %i",&d1.year,&d1.month,&d1.day); printf("\nThe second: "); scanf("%i %i %i",&d2.year,&d2.month,&d2.day); printf("\nThe day between the two date is: %i",calculateDay(d1,d2)); printf("\n %i %i",calculateN(d1),calculateN(d2)); return 0; }
这里我输入第一个日期输入2004 08 08时,d1.year=2004, d1.month=0, d1.day=8,
而第二个日期输入2005 02 02时,d2.year=0, d2.month = 8, d2.day=2005,
请问这些日期错乱和变成0是怎么回事呢?
qq___524
相关分类