How to find leap year programmatically in C
c, leap-year
Solution
Your logic to determine a leap year is wrong. This should get you started (from Wikipedia):
if year modulo 400 is 0
then is_leap_year
else if year modulo 100 is 0
then not_leap_year
else if year modulo 4 is 0
then is_leap_year
else
not_leap_year
`x modulo y` means the remainder of `x` divided by `y`. For example, 12 modulo 5 is 2.
Problem
I wrote a program in C to find whether the entered year is a leap year or not. But unfortunately its not working well. It says a year is leap and the preceding year is not leap. ``` #include <stdio.h> #include <conio.h> int yearr(int year); void main(void) { int year; printf("Enter a year:"); scanf("%d", &year); if (!yearr(year)) { printf("It is a leap year."); } else { printf("It is not a leap year"); } getch(); } int yearr(int year) { if ((year % 4 == 0) && (year / 4 != 0)) return 1; else return 0; } ``` After reading the comments I edited my code as: ``` #include <stdio.h> #include <conio.h> int yearr(int year); void main(void) { int year; printf("Enter a year:"); scanf("%d", &year); if (!yearr(year)) { printf("It is a leap year."); } else { printf("It is not a leap year"); } getch(); } int yearr(int year) { if (year % 4 == 0) { if (year % 400 == 0) return 1; if (year % 100 == 0) return 0; } else return 0; } ```