CMIS 140 Due 16 Dec Write a program to display a calendar for any month of any year of the twentieth century and on. Here is a sample run, with user input in . (The angle brackets are not entered by the user, they are here to show what part of the interaction is user input.) Your prompts do not have to be identical to these: Enter month number: <13> Month must be between 1 and 12, please re-enter: <0> Month must be between 1 and 12, please re-enter: <2> Enter year: <98> Year must be 1900 or later, please re-enter: <2002> February 2002 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 Another? (y or n) -------------------------------------------------------- To determine the day of the week on which the month starts: know that January 1, 1900 was a Monday, and then find the number of days difference between that day and the first day of the month for which you are making the calendar. This difference plus one mod 7 (i.e. (totaldays+1) % 7) tells you the day of the week (0 meaning Sunday, 1 meaning Monday etc.). Finding the number of days from 1/1/1900 to the first day of any other month can be further broken down into the following subproblems: 1. Number of days in whole years (i.e., (Year - 1900) * 365); 2. One day for each year in the above range which is a leap year; 3. The number of days in each month from January thru the previous month of the year you're making a month calendar for. You must use this algortihm to calculate the starting day; you may not use another algorithm found on the web. Remember the rule for leap years: A year is a leap year if it is divisible by 4, unless it is divisible by 100 (in which case it's not a leap year) UNLESS it's also divisible by 400 (in which case it's a leap year). year%4==0 && year%100!=0 || year%400==0 (1900 was not a leap year, but 2000 is, 2100 will not be). See the function in the notes. Use the method of top-down design, breaking the problem into subproblems and each subproblem into further subproblems, until it is easy to code each subproblem as a C function. At this point, your problem decomposition should show the basic structure of the program, as well as making the code modular and easy to read and debug. To give you practice in writing functions, your program MUST have several functions, including one that inputs from the user the month and year. main should be not much more than a series of function calls. Global variables are NOT allowed. Displaying the dates hint: have a loop that prints out the blank days of the first week, then have a loop that loops over the days 1 to 30 (or 31, 28, or 29) The end of the week is when the date plus the number of blank days is a multiple of 7. You must learn how to write and use functions. The problem seems bewildering, but if you analyze it and split it into subproblems it becomes clear. Solving the problem by devising an algorithm to do it is the essence of programming and computer science. The programming language is just the tool to implement the algorithm. You won't find the procedure to create a monthly calendar in a textbook, you are creating and inventing the procedure.