您的位置:首页 > 其它

分享--------日历程序(自己打入,检验后有三个警告,但可运行,欢迎大家完善此程序)

2014-05-02 19:09 555 查看

#include "stdio.h"

const int monthDays[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};

const int yearBase=2000;

const int weekDayBase=6;

main()

{

void PrintIntroduction();

int IsLegal(int,int);

void Calendar(int,int);

int year;

int month;

PrintIntroduction();

while(1){

printf("please enter year:");

scanf("%d",&year);

printf("please enter month:");

scanf("%d",&month);

if(IsLegal(year,month)){

Calendar(year,month);

}

else{printf("The date that you type in is illega\n");

break;

}

}

}

void PrintIntroduction()

{

printf("*****************************************\n");

printf("The program will print the calendar of the given month\n");

printf("You can type in the year after 2000,and month between 1 and 12\n");

printf("If what you type in is illengal, the calendar will not be printed\n");

printf("*****************************************\n");

}

int IsLegal(int year,int month)

{

return(year>=2000&&month>=1&&month<=12);

}

void Calendar(int year,int month)

{

void PrintHeadline(int,int);

void printBody(int,int);

PrintHeadline(year,month);

PrintBody(year,month);

}

void PrintHeadline(int year,int month)

{

char name[10];

switch(month){

case 1:strcpy(name,"January");

break;

case 2:strcpy(name,"February");

break;

case 3:strcpy(name,"March");

break;

case 4:strcpy(name,"April");

break;

case 5:strcpy(name,"May");

break;

case 6:strcpy(name,"June");

break;

case 7:strcpy(name,"July");

break;

case 8:strcpy(name,"Aujust");

break;

case 9:strcpy(name,"September");

break;

case 10:strcpy(name,"October");

break;

case 11:strcpy(name,"November");

break;

case 12:strcpy(name,"December");

break;

}

printf("********************************\n");

printf(" %d %s\n",year,name);

printf("********************************\n");

printf(" Sun Mon Tue Wed Thu Fri Sat\n");

}

PrintBody(int year,int month)

{

int weekDay,number;

int counter;

int FirstDay(int,int);

int IsLeap(int);

weekDay=FirstDay(year,month);

number=monthDays[month];

if(IsLeap(year)&&month==2){

number++;

}

for(counter=0;counter<weekDay*5;counter++){

printf(" ");

}

for(counter=1;counter<=number;counter++){

printf("%5d",counter);

weekDay++;

if(weekDay%7==0){

printf("\n");

}

}

printf("\n");

}

int FirstDay(int year,int month){

int IsLeap(int);

int counter;

int sum;

int sumYear=0;

int sumMonth=0;

int weekDay;

for(counter=yearBase;counter<year;counter++){

if(IsLeap(counter)){

sumYear+=366;

}

else{

sumYear+=365;

}

}

for(counter=1;counter<month;counter++){

sumMonth++;

}

sum=sumYear+sumMonth;

weekDay=(sum+weekDayBase)%7;

return(weekDay);

}

int IsLeap(int year){

return(year%4==0&&year%100!=0||year%400==0);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: