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;
}
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.