Question 02: Write a modular C program to compute and display the day-number in a year for a date that is input at the keyboard. A day-number for a date is the number of days from 1st January of the date's year to the date. For example: The day number of 3rd February is 34, the day number of 5th March is 64 if the year is a non-leap year; otherwise it is 65 (A leap year is a year that has 366 days; a non-leap year has 365 days).
Your program must check for input validity. It must display an appropriate error message and terminate if the three inputs for date (day, month, and year) do not form a valid date.
In addition to the main function your program must use the following functions:
- A function that displays the following message to the user:
"This program computes and displays the day number of a date input as: day month year."
- Abooleanfunction (implemented as anintfunction) that tests for input validity. The function returns 1 if the three inputs form a valid date; otherwise it returns zero. This function must not haveprintforscanfcalls.
- Abooleanfunction (implemented as anintfunction) that returns 1 if its parameter year is a leap year; otherwise it returns 0 (A leap year is a year that has 366 days). This function must not haveprintforscanfcalls.
- Anintfunction that returns the day-number of a particular date. This function must not haveprintforscanfcalls.
Note:
- A year is a leap year if it is divisible by 400; otherwise if it is divisible by 4andnot divisible by 100.
- Assume a year is between 1900 and 3000 inclusive, i.e.,1900 ≤ year ≤ 3000
- Your program must be general.
- For grading purposes, each non-main function must be written after the main.
- Your program must behave as the sample program runs below.
- You may use the table of day-numbers given below to test your program.
Sample program runs:
Date
|
Day number
|
Comment
|
February 29, 2015
|
invalid
|
2015 is not a leap year
|
March 27, 2015 (Fri)
|
Day 86
|
|
April 9, 2016 (Sat)
|
Day 100
|
2016 is a leap year
|
September 14, 2016 (Wed)
|
Day 258
|
|