计算前一天
是一道面试题,时间掐的比较紧就比较着急,然后弄了一堆判断,考下来后感觉自己特笨,这个当天下午想出来的……
void GetPreDat(const char *day, char *preDay)
{
int day_in_month[] = {31,31,28,31,30,31,30,31,31,30,31,30,31};
int month_circle[] = {12,1,2,3,4,5,6,7,8,9,10,11,12};
int i_date;
int i_year,i_month,i_day;
i_date = atoi(day);
i_year = i_date/10000;
i_month = (i_date/100)%100;
i_day = (i_date%100);
//normal
if(i_day == 1)
{
//normal year
i_day = day_in_month[i_month - 1];
i_month = month_circle[i_month - 1];
//leap year
if((!(i_year % 4) && (i_year % 100)) || !(i_year % 400))
{
if(i_month == 2)
{
i_day = 29;
}
}
if(i_month == 12)
{
--i_year;
}
}
else
{
--i_day;
}
i_date = i_year*10000 + i_month*100 + i_day;
itoa(i_date,preDay,10);
}

浙公网安备 33010602011771号