C program to find number of days in a month

C program to find number of days in a month

In this blog post, we learn how to write a C program to find number of days in a month?. We will write the C program to find number of days in a month. Write a C program to input the month from the user and find the number of days. How to find a number of days in a given month in C programming. Logic to find the number of days for a given month.

Example,

Input: 3
Output: 31 days


Input: 12
Output: 31 days

 

Step by step descriptive logic to find number of days in given month and year:

  • Get input month and year from the user and store it in some variable. Here I am using two variable months and years to store the value.
  • Check the leap year for Feb month because Feb month could have 28 or 29 days (for leap year).
  • Now use the below table to find the number of days in the given month and year.
Month Total days
January, March, May, July, August, October, December 31 days
February 28/29 days
April, June, September, November 30 days

C program to find number of days in a month using switch case:

The below program ask the user to enter the valid month and year. After getting the value of a month and year from the user program display the number of days using the switch case. We have used the above-mentioned table to find the number of days.

#include<stdio.h>


enum MonthIndex
{
    Jan = 1, Feb = 2, Mar = 3, Apr = 4,  May = 5,  Jun = 6,
    Jul = 7, Aug = 8, Sep = 9, Oct = 10, Nov = 11, Dec = 12
};

int isLeapYear(unsigned int year)
{
    return ((year%400 == 0) || ((year%4 == 0) && (year%100!=0)));
}

unsigned char findDaysInMonth(unsigned int const year, unsigned char const month)
{
    unsigned char numberOfDays;

    switch (month)
    {
    case Jan:
    case Mar:
    case May:
    case Jul:
    case Aug:
    case Oct:
    case Dec:
        numberOfDays = 31;
        break;
    case Apr:
    case Jun:
    case Sep:
    case Nov:
        numberOfDays = 30;
        break;
    case Feb:
        if (isLeapYear (year))
        {
            numberOfDays = 29;
        }
        else
        {
            numberOfDays = 28;
        }
        break;

    default:
        numberOfDays = 0;
        break;
    }
    return numberOfDays;
}

int main()
{
    int month, year;
    unsigned char numberOfDays;

    //Ask user to input year (+ve)
    printf("Enter year: ");
    scanf("%u", &year);

    //Ask user to input month between 1 to 12
    printf("Enter month number(1-12): ");
    scanf("%d", &month);

    numberOfDays = findDaysInMonth(year, month);

    if(numberOfDays!= 0)
    {
        printf("Days number = %d",numberOfDays);
    }
    else
    {

        printf("Please enter valid input");
    }

    return 0;
}

Output:

find number of days in months