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.
Output
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 year
int 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++;
}
}
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
jayarajtk
like this