Fahad Uddin - 1 year ago 62

C Question

I made a program using 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 coding 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;

}

Answer Source

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.