⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 datetimes.c

📁 程序可查询2003-2022年共20年的日历
💻 C
字号:
#include <stdio.h> 
#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;i<N;i++) 
      for(month=1;month<=12;month++){ 
        if(month<=8){ /*前八个月*/ 
            if(month==1) daynumber=31; 
            else if(month==3){ 
              if(!(thisyear%4)) daynumber=29; /*闰年*/ 
              else daynumber=28; 
            } /*-else if-*/ 
            else{ 
              if(month%2) daynumber=30; /*5,7月*/ 
              else daynumber=31; /*2,4,6,8月*/ 
            } /*--else--*/ 
        } /*--if--*/ 
        else{ /*九月以后*/ 
            if(month%2) daynumber=31; /*9,11月*/ 
            else daynumber=30; /*10,12月*/ 
        } /*--else--*/ 
        week+=daynumber%7; /*每月第一天是星期几*/ 
        if(week>Sunday) 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(searchyear<thisyear||searchyear>thisyear+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-*/ 
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -