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

来源:互联网 发布:大数据专业委员会 编辑:程序博客网 时间:2024/05/16 01:50


#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);
}

0 0
原创粉丝点击