www.pudn.com > DateTimes.rar > DateTimes.c


#include   
#define N 20 /*能查看的总年数*/  
#define Monday 1  
#define Sunday 7  
 
int ymFirstd[N][12]; /*每年每个月的第一天是星期几*/  
int thisyear=2003; /*从2003年开始*/  
char hint[1*32*2];  
 
/*---创建日历表---*/  
void InitDateList()  
{  
  int i,month,daynumber; /*daynumber记录本月的天数*/  
  int week=Sunday; /*用上一年最后一个月第一天的星期数进行初始化*/  
  for(i=0;iSunday) week-=7;  
        ymFirstd[ i][month-1]=week;  
      } /*--for(month...)--*/  
}  
 
/*---查找并输出日历---*/  
void SearchDate()  
{  
  int week,searchyear,searchmonth,day=1;  
  clrscr();  
  printf("\n输入年份(%d-%d): ",thisyear,thisyear+N-1);  
  scanf("%d",&searchyear);  
  while(searchyearthisyear+N-1){  
      printf("输入的年份超出范围,请重新输入\n");  
      printf("\n输入年份(%d-%d): ",thisyear,thisyear+N-1);  
      scanf("%d",&searchyear);  
  } /*-while-*/  
  printf("\n输入月份: ");  
  scanf("%d",&searchmonth);  
  while(searchmonth<1||searchmonth>12){  
      printf("笨蛋,有这个月份吗,重输呀\n");  
      printf("\n输入月份: ");  
      scanf("%d",&searchmonth);  
  } /*-while-*/  
  clrscr();  
  printf("%d年%d月\n",searchyear,searchmonth);  
  printf("\n    Mon    Tue    Wed    Thu    Fri    Sat    Sun\n");  
  week=ymFirstd[searchyear-thisyear][searchmonth-1];  
  gotoxy((week-1)*7+1,5);  
  for(;week<=Sunday;week++){  
      printf("    %-3d",day++);  
      if(!(week%Sunday)){ /*每打印一周就换行*/  
        week=Monday-1;  
        printf("\n\n");  
      } /*-if-*/  
      if(searchmonth<=7){ /*查询的月份在前七个月里*/  
        if(searchmonth%2&&day==32) break; /*1,3,5,7月打印结束*/  
        if(searchmonth==2){  
            if(!(searchyear%4)&&day==30) break; /*闰年二月打印结束*/  
            if(searchyear%4&&day==29) break; /*非闰年二月打印结束*/  
        } /*if*/  
        else if(!(searchmonth%2)&&day==31) break; /*4,6月打印结束*/  
      } /*-if-*/  
      else{  
        if(searchmonth%2&&day==31) break; /*9,11月打印结束*/  
        if(!(searchmonth%2)&&day==32) break; /*8,10,12月打印结束*/  
      } /*-else-*/  
  } /*--for--*/  
  getch();  
  clrscr();  
  puttext(1,1,32,1,hint);  
}  
 
/*---主函数---*/  
void main()  
{  
  InitDateList();  
  clrscr();  
  printf("按Esc键退出程序,按任意键进行查询");  
  gettext(1,1,32,1,hint);  
  while(1)  
      switch(getch()){  
        case 27: exit(0); /*按Esc键退出*/  
        default: SearchDate();  
      } /*-switch-*/  
}