Go4Expert (http://www.go4expert.com/)
-   C (http://www.go4expert.com/articles/c-tutorials/)
-   -   Month calender in plain C (http://www.go4expert.com/articles/month-calender-plain-c-t4074/)

 shabbir 29Apr2007 18:46

Month calender in plain C

Program prints the month without using any system related information but just making some simple calculations of days from the reference day 1/1/1900 as Monday.
Code: C

`#include<stdio.h>#include<conio.h>#define Y 1900             /*1/1/1900 Monday*/void days(int ,int );void display(int , int );// Almost constant but we modify the month[1] i.e. Feb for leap yearint month[]={{31},{28},{31},{30},{31},{30},{31},{31},{30},{31},{30},{31}};int main(){    int m,yr;    int i = 0;    do    {        i++;        if(i > 1)        {            printf("\nWhat kind of month that was please re-enter\n");        }        printf("Enter the month [1-12]\t");        scanf("%ld",&m);    }while(m>12 || m<0);    i = 0;    do    {        i++;        if(i > 1)        {            printf("\nPlease enter year of this century i.e. 1900 or above\n");        }        printf("Enter the year\t");        scanf("%ld",&yr);    }while(yr<1900);    if((yr%4==0)&&((yr%100!=0)||(yr%400==0)))    {        // We did not had the month as const because of this.        month[1]=29;    }    days(m,yr);    printf("\n\n");    return 0;}void days(int m,int yr){    int i,md=0,leap=0,track;    unsigned int d,yrd;    for(i=Y;i<yr;i++)    {        if((i%4==0)&&((i%100!=0)||(i%400==0)))            leap++;    }    for(i=0;i<(m-1)&&(i<11);i++)        md=md+month[i];    yrd=(yr-Y)*365;    d=yrd+leap+md;    track=d%7;    display(m,track);}void display(int m, int track){    int dt,loop;    printf("\n\n\t");    printf("Mon\tTues\tWed\tThurs\tFri\tSat\tSun\n\n");    for(loop=0;loop<=track;loop++)         printf("\t");    for(dt=1;dt<=month[m-1];dt++)    {        if(track%7==0 && track!=0)            printf("\n\n\t");        printf("%d\t",dt);        track++;    }}`

Output
Code:

```Enter the month [1-12]  4 Enter the year  2007     Mon    Tues    Wed    Thurs  Fri    Sat    Sun                                                     1     2      3      4      5      6      7      8     9      10      11      12      13      14      15     16      17      18      19      20      21      22     23      24      25      26      27      28      29     30```

 All times are GMT +5.5. The time now is 01:45.