/* * Converts a date into day of week and number of days since * the start of 20th century. */ #include void main() { int D, M, Y, Y_calc, year_quo, year_mod, month_ent[12] = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 }; long int day_century; char *name[] = { "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday", "Monday" }; printf("Day: "); fflush(stdout); scanf("%d", &D); do { printf("Month: "); fflush(stdout); scanf("%d", &M); if (M < 1 || M > 12) fprintf(stderr,"Month 1-12 only\a\n"); } while (M < 1 || M > 12); do { printf("Year: "); fflush(stdout); scanf("%d", &Y); if (Y < 1901) fprintf(stderr,"Year must be > 1900\a\n"); } while (Y < 1901); Y_calc = Y - 1901; year_quo = Y_calc / 4; year_mod = Y_calc % 4; day_century = (long int)Y_calc * 365 + year_quo + month_ent[M - 1] + D; if (year_mod < 3 || M < 3) day_century--; printf("%d/%d/%d is %ld days after 1/1/1901 ", M, D, Y, day_century); printf("and it's a %s\n",name[day_century % 7]); }