/* week.c 05-02-2000 */ #include #include /* True false constants*/ #define TRUE 1 #define FALSE 0 int main(void) { int day = 0, month = 0, year = 0, day_of_week = 0, leap_year = 0; ret_val = 0; while ( ret_val != 3 ) { printf("Enter a date between 01:01:1800 - 31:12:1999 (DD:MM:YYYY) > "); scanf("%d:%d:%d",&day,&month,&year); } printf("Enter a date between 01:01:1800 - 31:12:1999 (DD:MM:YYYY) > "); scanf("%d:%d:%d",&day,&month,&year); /*Get last two digits of year and add a quater of it*/ day_of_week = (year % 100) + ((year % 100) * 0.25); /*Add day of the month*/ day_of_week += day; /*Check for leap year*/ if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) leap_year = TRUE; else leap_year = FALSE; /*Those months with a missing case have nothing added to them*/ switch (month) { case 1: if (leap_year == FALSE) day_of_week += 1; break; case 2: if (leap_year == TRUE) day_of_week += 3; else day_of_week += 4; break; case 3: day_of_week += 4; break; case 5: day_of_week += 2; break; case 6: day_of_week += 5; break; case 8: day_of_week += 3; break; case 9: day_of_week += 6; break; case 10: day_of_week += 1; break; case 11: day_of_week += 4; break; case 12: day_of_week += 6; break; } /* Add 2 if year is between 1800 - 1899 */ if ( year < 1900 ) day_of_week += 2; day_of_week = day_of_week % 7; /* Find out what day of week it is */ switch (day_of_week) { case 1: printf("%d:%d:%d was a Sunday\n", day, month, year); break; case 2: printf("%d:%d:%d was a Monday\n", day, month, year); break; case 3: printf("%d:%d:%d was a Tuesday\n", day, month, year); break; case 4: printf("%d:%d:%d was a Wednesday\n", day, month, year); break; case 5: printf("%d:%d:%d was a Thursday\n", day, month, year); break; case 6: printf("%d:%d:%d was a Friday\n", day, month, year); break; case 0: printf("%d:%d:%d was a Saturday\n", day, month, year); break; } return EXIT_SUCCESS; }