/* Example: Day of Year Source: K&R2, p. 111 Modification: Peter Brusilovsky */ #include 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}, }; void month_day(int year, int yday, int *pmonth, int *pday); main() { int year, yday; /* input data */ int month, mday; /* output data */ /* reads and process data until 0 is entered */ do{ printf("Enter Year and Day (yyyy dd): "); scanf("%d %d", &year, &yday); if(yday > 0) { month_day(year, yday, &month, &mday); printf("Day %d of %d is simply %d/%d/%d\n", yday, year, month, mday, year); } else printf("Good Bye!\n"); } while(yday > 0); return 0; } void month_day(int year, int yearday, int *pmonth, int *pday) { int i, leap /* 1 for leap year, 0 for non-leap */; leap = ((year%4 == 0) && year%100 != 0) || year%400 == 0; for(i = 1; yearday > daytab[leap][i]; i++) yearday -= daytab[leap][i]; *pmonth = i; *pday = yearday; }