All years which are perfectly divisible by **4** are leap years except for century years (years ending with **00**), which are leap years only if they are perfectly divisible by **400**.

For example,

Leap Year | Not Leap Year |
---|---|

1968 | 1971 |

2004 | 2006 |

2012 | 2010 |

1200 | 1700 |

1600 | 1800 |

2000 | 1900 |

In the examples below, the user is asked to enter a year, and the program checks whether the year entered by the user is a leap year or not.

## Example 1: Check Leap Year Using if...else Ladder

```
#include <iostream>
using namespace std;
int main() {
int year;
cout << "Enter a year: ";
cin >> year;
// leap year if perfectly divisible by 400
if (year % 400 == 0) {
cout << year << " is a leap year.";
}
// not a leap year if divisible by 100
// but not divisible by 400
else if (year % 100 == 0) {
cout << year << " is not a leap year.";
}
// leap year if not divisible by 100
// but divisible by 4
else if (year % 4 == 0) {
cout << year << " is a leap year.";
}
// all other years are not leap years
else {
cout << year << " is not a leap year.";
}
return 0;
}
```

**Output 1 **

Enter a year: 1900 1900 is not a leap year.

**Output 2 **

Enter a year: 2012 2012 is a leap year.

## Example 2: Check Leap Year Using Nested if

```
#include <iostream>
using namespace std;
int main() {
int year;
cout << "Enter a year: ";
cin >> year;
if (year % 4 == 0) {
if (year % 100 == 0) {
if (year % 400 == 0) {
cout << year << " is a leap year.";
}
else {
cout << year << " is not a leap year.";
}
}
else {
cout << year << " is a leap year.";
}
}
else {
cout << year << " is not a leap year.";
}
return 0;
}
```

Here, we have used nested `if`

statements to check whether the year given by the user is a leap year or not.

First, we check if `year` is divisible by **4** or not. If it is not divisible, then it is not a leap year.

If it is divisible by **4**, then we use an inner `if`

statement to check whether `year` is divisible by **100**.

If it is not divisible by **100**, it is still divisible by **4** and so it is a leap year.

We know that the century years are not leap years unless they are divisible by **400**.

So, if `year` is divisible by **100**, another inner `if`

statement checks whether it is divisible by **400** or not.

If it's divisible by **400**, it is a leap year. Otherwise, it's not a leap year.

## Example 3: Check Leap Year Using Logical Operators

We can combine the conditions required for a leap year into a single `if...else`

statement using the && and || operators.

```
#include <iostream>
using namespace std;
int main() {
int year;
cout << "Enter a year: ";
cin >> year;
// if year is divisible by 4 AND not divisible by 100
// OR if year is divisible by 400
// then it is a leap year
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
cout << year << " is a leap year.";
}
else {
cout << year << " is not a leap year.";
}
return 0;
}
```