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: #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++; } } 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