check leap year in c

Program to check leap year in C language.

In this article, you will learn how to write a C program to check leap year. But let’s first understand what is a leap year before writing a C program to check whether a given year is a leap year or not.

What is a Leap Year?

A leap year is a calendar year that contains an additional day. It has 366 days instead of 365, by extending February to 29 days rather than the common 28. A leap year comes in every 4 years.

For example – 2004, 2008, 2012, 2016, 2020,  etc.

 

You can easily check whether a given year is a leap or not using the C program. A year is a leap year if the following conditions match:

  • If the given year is a multiple of 400. That means divided by 400.
  • If the given year is a multiple of 4 but not a multiple of 100. That means divided by 4 but not divided by 100.

You just need to check the above condition for the leap year.

 

Algorithm to find leap year:

Following is the pseudo-code to find a leap year.

Algorithm:
IF year MODULER 400 IS 0
 THEN leap year
ELSE IF year MODULER 100 IS 0
 THEN not_leap_year
ELSE IF year MODULER 4 IS 0
 THEN leap_year
ELSE
 not_leap_year

 

Explanation:

  • If the given year is divisible by 400 then the first “if” statement executes and marks it leap year.
  • If the first given year is not divisible by 400 then, the next else-if condition is checked, and if the given year is divisible by 100, then mark it as not a leap year.
  • If the again else-if statement is not executed that means the given year is not divisible by 100 then, the next else-if condition is checked, and if the given year is divisible by 4, then mark it as a leap year.
  • If none of the above is true then the else part executes and marks it as not a leap year.

Flow Chart to check Leap Year:

The below chart is describing the above-discussed pseudo-code to find the leap year.

 

flow chart check leap year

 

C Program to check leap year:

Below we are writing some example programs that are describing how we can check leap year using the C language. So let us see the code,

Method 1:- Using an if-else statement

This is an implementation of the above pseudo-code.

#include <stdio.h>

int main()
{
    unsigned int year = 0;

    printf("Enter a valid year:");
    scanf("%u",&year);

    if((year%400 == 0) || ((year%4 == 0) && (year%100!=0)))
    {
        printf("%u is a leap year\n", year);
    }
    else
    {
        printf("%u is not a leap year\n", year);
    }

    return 0;
}

Output-1:

Enter a valid year:2020
2020 is a leap year

 

Output-2:

Enter a valid year:2001
2001 is not a leap year

 

Code Analysis:

In the above c code example, first, we ask the users to enter the year.

printf("Enter a valid year:");
scanf("%u",&year);

 

Now check the primary condition for a leap year. If the given year satisfies the condition of a leap year then the given year is a leap year.

if((year%400 == 0) || ((year%4 == 0) && (year%100!=0)))
{
    printf("%u is a leap year\n", year);
}
else
{
    printf("%u is not a leap year\n", year);
}

 

For example 2020. The year 2020 is divisible by 4 but not by 100. So, it is a leap year. But, the year 2001 is neither divisible by 4 nor by 400. So, it is not a leap year.

 

Method 2:- Using the if-else-if ladder

Another approach to checking leap year using the if-else-if statement.

#include <stdio.h>


int main()
{
    unsigned int year=0;
    printf("Enter a valid year:");
    scanf("%u",&year);

    if(((year%4) == 0) && ((year%100)!=0))
    {
        printf("%u is a Leap Year.\n\n\n",year);
    }
    else if(year%400 == 0)
    {
        printf("%u is a Leap Year.\n\n\n",year);
    }
    else
    {
        printf("%u is Not a Leap Year.\n\n\n",year);
    }

    return 0;
}

 

Method 3:- Using the nested if-else

The third approach uses the nested if-else statement.

#include <stdio.h>

int main()
{
    unsigned int year=0;

    printf("Enter a valid year:");
    scanf("%u",&year);

    if ((year%4) == 0)
    {
        if ((year%100) == 0)
        {
            if ((year%400) == 0)
            {
                printf("%u is a Leap Year.\n\n\n",year);
            }
            else
            {
                printf("%u is Not a Leap Year.\n\n\n",year);
            }
        }
        else
        {
            printf("%u is a Leap Year.\n\n\n",year);
        }
    }
    else
    {
        printf("%u is Not a Leap Year.\n\n\n",year);
    }

    return 0;
}

 

Method 4:- Using Conditional Operator (ternary operator)

Here we check the leap year using the conditional operator.

#include <stdio.h>

int main()
{
    unsigned int year=0;
    printf("Enter the year:");
    scanf("%u",&year);

    //check leap year using conditional operator
    int isLeapYear = ((year%400) != 0);
    isLeapYear = isLeapYear? (((year%4) == 0) && ((year%100) != 0)):1;

    if(isLeapYear)
    {
        printf("%u is a Leap Year.\n\n\n",year);
    }
    else
    {
        printf("%u is Not a Leap Year.\n\n\n",year);
    }

    return 0;
}

 

 

Method 5:- Using a function

In this method, we create a function to find a leap year. It makes the code more readable. I think it is the best approach to check the leap year. In function, you can use any described method to check leap year. I am describing some ways to create a function to check leap year but there is “N way” you can create as per your requirement.

First Way:-

 

#include <stdio.h>


int isLeapYear(unsigned int year)
{
    int result = 0;
    if ((year%4) ==  0)
    {
        if ((year%100) ==  0)
        {
            if ((year%400) ==  0)
            {
                result = 1;
            }
        }
        else
        {
            result = 1;
        }
    }
    return result;
}


int main()
{
    unsigned int year=0;
    int leapYear = 0;

    printf("Enter the year:");
    scanf("%u",&year);

    //check leap year
    leapYear = isLeapYear(year);
    if(leapYear)
    {
        printf("%u is a Leap Year.\n\n\n",year);
    }
    else
    {
        printf("%u is Not a Leap Year.\n\n\n",year);
    }

    return 0;
}

Output:

Enter the year:2010
2010 is Not a Leap Year.

 

Code Analysis:

In the above c code example, first, we ask the users to enter the year.

printf("Enter the year:");
scanf("%u",&year);

 

Now check the leap year to call the function isLeapYear(). If the year is leap year function returns 1 otherwise returns 0.

leapYear = isLeapYear(year);
if(leapYear)
{
    printf("%u is a Leap Year.\n\n\n",year);
}
else
{
    printf("%u is Not a Leap Year.\n\n\n",year);
}

Second Way:

#include <stdio.h>

//Return 1 if year is leap year
int isLeapYear(unsigned int year)
{
    int ret = ((year%400) != 0);
    ret = ret? (((year%4) == 0) && ((year%100) != 0)):1;

    return ret;

}

int main()
{
    unsigned int year=0;
    int leapYear = 0;

    //Ask to enter year
    printf("Enter the year:");
    scanf("%u",&year);

    //check leap year
    leapYear = isLeapYear(year);
    if(leapYear)
    {
        printf("%u is a Leap Year.\n\n\n",year);
    }
    else
    {
        printf("%u is Not a Leap Year.\n\n\n",year);
    }

    return 0;
}

 

 

C Program to Find Leap Years Within a Given Range:

In the previous examples, you learn how to check year is a leap year or not. But now I am asking to find leap years between the given two years. That means you need to find the leap years to the given range of years.

Don’t worry I am not only asking the question I am also writing the solution but I suppose you should try first.

#include <stdio.h>


//function to find leap year
int isLeapYear(unsigned int year)
{
    int result = 0;
    if ((year%4) ==  0)
    {
        if ((year%100) ==  0)
        {
            if ((year%400) ==  0)
            {
                result = 1;
            }
        }
        else
        {
            result = 1;
        }
    }
    return result;
}

int main()
{
    int startYear, endYear;
    int year = 0;

    printf("Enter the Valid Beginning year of the range: ");
    scanf("%d",&startYear);

    printf("Enter the Valid Ending year of the range: ");
    scanf("%d",&endYear);

    /*
       Now find the leap year between
       the starting and ending year.
    */
    printf("Leap Years between %d and %d are: \n", startYear, endYear);
    for (year= startYear; year<= endYear; ++year)
    {
        const int leapYearFound = isLeapYear(year);
        if (leapYearFound)
        {
            printf("%d \n", year);
        }
    }
    return 0;
}

Output:

Enter the Valid Beginning year of the range: 1991
Enter the Valid Ending year of the range: 2022

Leap Years between 1991 and 2022 are:
1992
1996
2000
2004
2008
2012
2016
2020

 

Recommended Post: