How to check leap year in C

3 Answers

0 votes
#include <stdio.h>
#include <stdbool.h>

bool isLeapYear(int year);
 
int main(int argc, char **argv) 
{ 
    int years[] = {2000, 2400, 1800, 1900, 2100, 2200, 2300, 2500,
                   2008, 2012, 2016, 2020, 2024, 2048, 2032};
     
    for (int i = 0; i < sizeof(years)/sizeof(years[0]); i++) {
        if (isLeapYear(years[i]))
            printf("%d is a leap year.\n", years[i]);
        else
            printf("%d is not a leap year.\n", years[i]);
    }
     
    return(0);
}
 
bool isLeapYear(int year) {
    if (year % 400 == 0)
        return true;
    else if (year % 100 == 0)
             return false;
    else if (year % 4 == 0)
             return true;
     
    return false;
}
 
 
/*
run:
 
2000 is a leap year.
2400 is a leap year.
1800 is not a leap year.
1900 is not a leap year.
2100 is not a leap year.
2200 is not a leap year.
2300 is not a leap year.
2500 is not a leap year.
2008 is a leap year.
2012 is a leap year.
2016 is a leap year.
2020 is a leap year.
2024 is a leap year.
2048 is a leap year.
2032 is a leap year.
 
*/


answered May 23, 2015 by avibootz
edited May 23 by avibootz
0 votes
#include <stdio.h>
#include <stdbool.h>

bool isLeapYear(int year);
 
int main(int argc, char **argv) 
{ 
    int years[] = {2000, 2400, 1800, 1900, 2100, 2200, 2300, 2500,
                   2008, 2012, 2016, 2020, 2024, 2048, 2032};
     
    for (int i = 0; i < sizeof(years)/sizeof(years[0]); i++) {
        if (isLeapYear(years[i]))
            printf("%d is a leap year.\n", years[i]);
        else
            printf("%d is not a leap year.\n", years[i]);
    }
     
    return(0);
}
 
bool isLeapYear(int year) {
    return !(year & (year % 100 ? 3 : 15));
}
 
 
/*
run:
 
2000 is a leap year.
2400 is a leap year.
1800 is not a leap year.
1900 is not a leap year.
2100 is not a leap year.
2200 is not a leap year.
2300 is not a leap year.
2500 is not a leap year.
2008 is a leap year.
2012 is a leap year.
2016 is a leap year.
2020 is a leap year.
2024 is a leap year.
2048 is a leap year.
2032 is a leap year.
 
*/

 



answered May 23 by avibootz
0 votes
#include <stdio.h>

int isLeap(int year) {
    // Leap year rules:
    // 1. Divisible by 400 → leap
    // 2. Divisible by 100 → NOT leap
    // 3. Divisible by 4   → leap
    if (year % 400 == 0) return 1;
    if (year % 100 == 0) return 0;
    if (year % 4 == 0)   return 1;
    
    return 0;
}

int main() {
    int years[] = {2000, 2400, 1800, 1900, 2100, 2200, 2300, 2500,
                   2008, 2012, 2016, 2020, 2024, 2048, 2032};
    int size = sizeof(years) / sizeof(years[0]);

    for (int i = 0; i < size; i++) {
        int y = years[i];
        if (isLeap(y))
            printf("%d is a leap year\n", y);
        else
            printf("%d is NOT a leap year\n", y);
    }

    return 0;
}

 
/*
run:
 
2000 is a leap year
2400 is a leap year
1800 is NOT a leap year
1900 is NOT a leap year
2100 is NOT a leap year
2200 is NOT a leap year
2300 is NOT a leap year
2500 is NOT a leap year
2008 is a leap year
2012 is a leap year
2016 is a leap year
2020 is a leap year
2024 is a leap year
2048 is a leap year
2032 is a leap year
 
*/

 



answered May 23 by avibootz

Related questions

3 answers 342 views
2 answers 315 views
315 views asked Feb 13, 2021 by avibootz
2 answers 407 views
407 views asked Feb 13, 2021 by avibootz
1 answer 266 views
1 answer 205 views
205 views asked Dec 12, 2024 by avibootz
1 answer 198 views
198 views asked Dec 12, 2024 by avibootz
1 answer 203 views
203 views asked Dec 12, 2024 by avibootz
...