已采纳
结果:
相差569天
#include
#ifndef __SDATE__
#define __SDATE__
struct SDate {
short int year;
short int month;
short int day;
};
#endif
int IsLeapYear(short year);
int DaysOfOneYear(SDate sd);
int SDateToAbsDays(SDate sd);
int IsLeapYear(short year) {
return year%4==0&&year%100||year%400==0;
}
int DaysOfOneYear(SDate sd) {
switch(sd.month-1) {
case 11:
sd.day+=30;
case 10:
sd.day+=31;
case 9:
sd.day+=30;
case 8:
sd.day+=31;
case 7:
sd.day+=31;
case 6:
sd.day+=30;
case 5:
sd.day+=31;
case 4:
sd.day+=30;
case 3:
sd.day+=31;
case 2:
sd.day+=IsLeapYear(sd.year)?29:28;
case 1:
sd.day+=31;
}
return sd.day;
}
int SDateToAbsDays(SDate sd) {
int years = sd.year -1;
int days = years*365 + years/4 - years/100 + years/400;
days+=DaysOfOneYear(sd);
return days;
}
int main()
{
SDate d1={2008,3,16},d2={2009,10,6};
int day=SDateToAbsDays(d2)-SDateToAbsDays(d1);
printf("相差%d天\n",day);
}
取消
评论