|
Project 2 (20 points) |

Programming
Assignment #2 Display a Calendar
Write a C program that displays a one-year calendar. Prompt the user for the day of the week on which January 1 falls and whether or not the year is a leap year.
After successfully completing this assignment, you should be able to:
· Develop a C program on a Unix platform
· Design a program that contains nested selection and iteration constructs
· Use advanced formatting strings and conversion specifiers to do I/O in a C program
Re-read Chapters 1 and 2 and read §§3.1-3.5 of The C Programming Language, 2nd edition, by Kernighan and Ritchie.
Details about scanf() and printf() can be found in Appendix B, §§B1.2-B1.3, or by executing in a Linux command shell any of the following commands:
man printf
man scanf
info printf
info scanf
Write a C program called Calendar.c that displays a one-year calendar. The program should prompt the user for the day of the week on which January 1 falls, and then it should prompt whether or not the year is a leap year. The day that January 1 falls on should be coded as:
· 0 Sunday
· 1 Monday
· 2 Tuesday
· 3 Wednesday
· 4 Thursday
· 5 Friday
· 6 Saturday
The calendar should be formatted as shown in the sample execution below. Note that numbers the days must be right-justified under the names of the days and that two spaces separate the names of the days from each other.
· <stdio.h> provides printf and scanf
You may assume that the user enters valid data; that is, your program does not have to check for valid responses. You should not define any functions in the solution for this program other than the main() function.
MONTHLY CALENDAR This program displays a calendar. You need to provide the day of the weekon which January 1 falls, and indicate whether or not the year is a leap year. Enter the code number for the day of the week on which January 1 falls:0- Sun 1- Mon 2- Tue 3- Wed 4- Thu 5- Fri 6- Sat Enter day code now (0 - 6): 4 Is the calendar for a leap year? (Enter 1 for yes, 0 for no): 0 *** CALENDAR *** January Sun Mon Tue Wed Thu Fri Sat 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 29 30 31 February Sun Mon Tue Wed Thu Fri Sat 1 2 3 4 5 6 7 8 9 10 11 12 13 14 . . .
(output continues for all 12 months)
Since we have not yet studied arrays, strings, or arrays of strings, you should design your algorithm to use if-else or switch statements to print the month names and to set other variables.
Write a short file called README summarizing your program, how to run it, and detailing any problems that you had. In your README document, be sure to specify the loop invariant of each loop.
From your CCC Linux account, submit your C source code file using the following turnin command:
/cs/bin/turnin submit cs2301 PA2 Calendar.c
README
Programs submitted after 11:59pm on due date (November 11) will be tagged as late, and will be subject to the late homework policy.
This assignment is worth twenty (20) points. Your program must compile without errors in order to receive any credit. It is suggested that before your submit your program, compile it again on a CCC system to be sure that it does not blow up or contain surprising warnings.
· Correct compilation without warnings 2 points
· Correct execution with graders test cases 5 points
· Correct usage of scanf() to get inputs from user 1 point
· Correct usage of print() to print the various lines of the calendar 3 points
· Correct usage of conditional and loop statements 5 points
· Satisfactory README file 2 points
· Loop invariant of each loop in README document 2 points