Sie sind auf Seite 1von 8

Calender Program in C

//Program to display calender for a given year

#include <stdio.h> #include <conio.h> #include <process.h> #include <ctype.h>

unsigned long days=0; //stores the days elapsed since 01.01.1899 void display(int n) //contains the number of days to display { int i, column, k, flag=0, j; printf("Sun Mon Tues Wed Thur Fri Sat "); for(i=1; i<=n; i++) { k=days%7;//remainder gives the starting day of each month if(flag==0) { for(j=1; j<=k; j++)//controls tabs of first week printf(" ");

flag=1;//ensures that block is only executed once

column=k; } printf("%d column++; if(column%7==0)//prints new line at the end of each week printf(" "); } printf(" Press any key to continue ", i);

"); getch(); }

void calculate(int year) //function calculates no. of days elapsed since 1899 { int i, month; for(i=1899; i<year; i++) //1899 chosen because Jan 1, 1899 is a Sunday { if((i%400==0)?1:((i%100==0)?0:((i%4==0)?1:0)))

/*This is because a leap year does not strictly fall on fourth year. If a year is divisible by 4, then it is a leap

every

year, but if that year is divisible by 100, then it is not a leap year. However, if the year is also divisible by 400, then it is a leap year. Eg: 1900 is not a leap year*/

days+=366; else days+=365; } for(month=1; month<=12; month++) { printf("

"); switch(month) /*switch case used to display each month and increment no. of days*/ { case 1: printf(" JANUARAY %d

", year); display(31); days+=31; break; case 2: printf(" FEBURARY %d

", year); if((year%400==0)?1:((year%100==0)?0:((year%4==0)?1:0))) { display(29); days+=29; } else { display(28); days+=28; } break; case 3: printf(" MARCH %d

", year); display(31); days+=31; break; case 4: printf(" APRIL %d

", year); display(30); days+=30; break; case 5: printf(" MAY %d

", year); display(31); days+=31; break; case 6: printf(" JUNE %d

", year); display(30); days+=30; break; case 7: printf(" JULY %d

", year); display(31); days+=31; break; case 8: printf(" AUGUST %d

", year); display(31); days+=31; break; case 9: printf(" SEPTEMBER %d

", year); display(30);

days+=30; break; case 10: printf(" OCTOBER %d

", year); display(31); days+=31; break; case 11: printf(" NOVEMBER %d

", year); display(30); days+=30; break; case 12: printf(" DECEMBER %d

", year); display(31); days+=31; break; } } }

void main() {

char ch[10]; int i, year, choice; do { clrscr(); days=0; printf("Enter the year in 'yyyy' format: "); scanf("%s", ch);//stores input first as a string for(i=0; i<strlen(ch); i++) if(ch[i]<'0' || ch[i]>'9')//checks for invalid inputs { printf("

Invalid Year!"); printf("

END OF PROGRAM"); getch(); exit(0); } year = atoi(ch); //converts the year from string to integer datatype clrscr(); printf("

Calender for Year %d", year); printf(" **********************

"); calculate(year); //calls function to calculate no. of days elapsed

printf(" ******************************************* "); printf("

Press 1 to continue, 2 to exit "); scanf("%d", &choice); }while(choice==1); clrscr(); printf("

END OF PROGRAM"); getch(); }

Das könnte Ihnen auch gefallen