1. We have moved from vBulletin to XenForo and you are viewing the site in the middle of the move. Though the functional aspect of everything is working fine, we are still working on other changes including the new design on Xenforo.
    Dismiss Notice

Check for a leap year

Discussion in 'C' started by pradeep, Dec 1, 2006.

  1. pradeep

    pradeep Team Leader

    C program to check whether a year is a leap year or not.

    Code:
    /*
    ** C program to check whether an entered year is a leap year or not
    ** @author: Pradeep
    ** @date: 02/12/06
    */
    
    #include<stdio.h>
    
    int main(void)
    {
        int year;
        
        printf("Enter the year: ");
        scanf("%d",&year);
    
        /*
        **    The logic is that the year is either divisible by both
        **    100 and 4 , OR its only divisible by 4 not by hundred
        */
        if(year%400 ==0 || (year%100 != 0 && year%4 == 0))
        {
            printf("Year %d is a leap year",year);
        }
        else
        {
            printf("Year %d is not a leap year",year);
        }
        
        return 0;
    }
     
  2. friendsforniraj

    friendsforniraj New Member

    i want to know one thing that if yr is divisible by 400 than it will definately be divisible by 100
    and if 1896 is leap yr than 1900 will definately be leap yr no checking reqd
    so from ma pt. of view hecking divisibilty by 4 is enough
     
  3. Aztec

    Aztec New Member

    No, it's not. Leap year does not always comes after 4 years.
    And yes, I did not do any typing mistake.
     
  4. pradeep

    pradeep Team Leader

    As per the current Gregorian calendar the determination of the leap year is as follows :

    1. All non-century years divisible by four are leap years.
    2. All century years divisible by 400 is a leap year.
    Which means 1900 & 2100 are not a leap years while year 2000 is a leap year.

    Read more here..
     
  5. bothie

    bothie New Member

    can u provide code which print intreger values given the number in words
     
  6. shabbir

    shabbir Administrator Staff Member

    Why dont you try it yourself and when you are stuck you can definitely look for some assistant.
     
  7. pradeep

    pradeep Team Leader

    Functions to check for leap year in various languages:

    Code:
    function isLeapyear(year)
       {
           return year%400 ==0 || (year%100 != 0 && year%4 == 0);
       }
    PHP:
    function is_lear_year($year)
       {
           return 
    $year%400 ==|| ($year%100 != && $year%== 0);
       }
       
    Code:
    sub{
           $year = shift;
           return 1 if($year%400 ==0 || ($year%100 != 0 && $year%4 == 0));
           # else ;-)
           return 0;
       }
       
    Code:
    Function IsLeapYear(y)
           If y Mod 400 = 0 Or (y Mod 100 <> 0 And y Mod 4 = 0) Then
               IsLeapYear = True
           Else
               IsLeapYear = False
           End If
       End Function
     
  8. rahul.mca2001

    rahul.mca2001 New Member

    we do we need a reminer by 400
     
  9. kb9snl

    kb9snl New Member

    EXCELLENT post. I hadn't thought to check for leap this way. Saved me a lot of time with this math!

    Thanks!
     
  10. c_user

    c_user New Member

    yup a good and a right program
    have a gud day..
     
  11. manoj1987

    manoj1987 New Member

  12. Deucel

    Deucel New Member

    Below is some code I wrote w/ pradeep's help. It was an assignment in a book I'm going through.

    ---------------------------------------------------------------------------------------------
    Code:
    #include<stdio.h>
    main()
    {
        int month, year, n, leap, notLeap;
    
    
    
        printf("\n\nEnter a month and year:   ");
        scanf("%d %d", &month, &year);
    
    
    
        if(year % 400 == 0 || (year % 100 != 0 && year % 4 == 0))
    
            year = leap;
    
        else
            year = notLeap;
    
        if (year == leap && month == 2)
            n = 29;
    
        if (year == notLeap && month == 2)
            n = 28;
    
        if (month == 1) n = 31;
        if (month == 3) n = 31;
        if (month == 4) n = 30;
        if (month == 5) n = 31;
        if (month == 6) n = 30;
        if (month == 7) n = 31;
        if (month == 8) n = 31;
        if (month == 9) n = 30;
        if (month == 10) n = 31;
        if (month == 11) n = 30;
        if (month == 12) n = 31;
    
        printf("\n\nThere are %d days in that month.", n);
    
    
        getch();
        return;
    }
     
    Last edited by a moderator: Feb 14, 2011
  13. Plastech

    Plastech New Member

    Your code is good but your logic isn't. Specifically, it's not just that the number is divisible by 100 and 4, it's that the number is divisible by 400. 200 is divisible by 100 and 4, but isn't a leap year.

    To say that a number is divisible by 100 and 4, or 100 or 4, is that same as saying a number is divisible by 4.

    That is: (A ^ B) v (A ^ !B) = A ^ (B v !B) = A.

    This is the same logic that makes all those ads so hilarious: "You can make up to $50,000 a year, or more!" So I guess the only amount you can't make is $50,000!

    Sorry, anal logician here ;)

    -Plast
     

Share This Page