#include <stdio.h>
static char daytab[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 day_of_year(int year,int month,int day);
void month_day(int year,int yearday);
int main(void)
{
int day,mo,dat;
day=day_of_year(1988,2,29);
month_day(1988,60);
return 0;
}
/* day_of_year: set day of year from month & day */
int day_of_year(int year,int month,int day)
{
int i,leap;
leap = year % 4 == 0 && year%100 != 0 || year%400 == 0;
for(i=1;i<month;i++)
day += daytab[leap][i];
return day;
}
/* month_day: set month,day from day of year */
void month_day(int year,int yearday)
{
int i,leap;
leap = year % 4 == 0 && year%100 != 0 || year%400 == 0;
for(i=1;yearday > daytab[leap][i];i++)
yearday -= daytab[leap][i];
printf("Month: %d, Day: %d\n", i
, yearday
); }
I2luY2x1ZGUgPHN0ZGlvLmg+CgpzdGF0aWMgY2hhciBkYXl0YWJbMl1bMTNdPXsKICAgIHswLDMxLDI4LDMxLDMwLDMxLDMwLDMxLDMxLDMwLDMxLDMwLDMxfSwKICAgIHswLDMxLDI5LDMxLDMwLDMxLDMwLDMxLDMxLDMwLDMxLDMwLDMxfQp9OwoKaW50IGRheV9vZl95ZWFyKGludCB5ZWFyLGludCBtb250aCxpbnQgZGF5KTsKdm9pZCBtb250aF9kYXkoaW50IHllYXIsaW50IHllYXJkYXkpOwoKaW50IG1haW4odm9pZCkKewogICAgaW50IGRheSxtbyxkYXQ7CgogICAgZGF5PWRheV9vZl95ZWFyKDE5ODgsMiwyOSk7CiAgICBwcmludGYoIiVkXG4iLGRheSk7CiAgICBtb250aF9kYXkoMTk4OCw2MCk7CiAgICByZXR1cm4gMDsKfQoKLyogZGF5X29mX3llYXI6IHNldCBkYXkgb2YgeWVhciBmcm9tIG1vbnRoICYgZGF5ICovCgppbnQgZGF5X29mX3llYXIoaW50IHllYXIsaW50IG1vbnRoLGludCBkYXkpCnsKICAgIGludCBpLGxlYXA7CgogICAgbGVhcCA9IHllYXIgJSA0ID09IDAgJiYgeWVhciUxMDAgIT0gMCB8fCB5ZWFyJTQwMCA9PSAwOwogICAgCiAgICBmb3IoaT0xO2k8bW9udGg7aSsrKQogICAgICAgIGRheSArPSBkYXl0YWJbbGVhcF1baV07CgogICAgcmV0dXJuIGRheTsKfQoKLyogbW9udGhfZGF5OiBzZXQgbW9udGgsZGF5IGZyb20gZGF5IG9mIHllYXIgKi8KCnZvaWQgbW9udGhfZGF5KGludCB5ZWFyLGludCB5ZWFyZGF5KQp7CiAgICBpbnQgaSxsZWFwOwoKICAgIGxlYXAgPSB5ZWFyICUgNCA9PSAwICYmIHllYXIlMTAwICE9IDAgfHwgeWVhciU0MDAgPT0gMDsKCiAgICBmb3IoaT0xO3llYXJkYXkgPiBkYXl0YWJbbGVhcF1baV07aSsrKQogICAgICAgIHllYXJkYXkgLT0gZGF5dGFiW2xlYXBdW2ldOwoKICAgIHByaW50ZigiTW9udGg6ICVkLCBEYXk6ICVkXG4iLCBpLCB5ZWFyZGF5KTsKfQo=