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;i 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+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-*/ }