include.docx
- 文档编号:30499736
- 上传时间:2023-08-16
- 格式:DOCX
- 页数:17
- 大小:16.90KB
include.docx
《include.docx》由会员分享,可在线阅读,更多相关《include.docx(17页珍藏版)》请在冰豆网上搜索。
include
#include
#include
#include
#include
intDaysInMonth[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
intDaysInYear[13]={0,31,59,90,120,151,181,212,243,273,304,334,365};
charMonthInfo[13][4]={"","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
charWeekInfoEng[8][4]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
charWeekInfoChs[8][3]={"天","一","二","三","四","五","六"};
intmain()
{
intyear,month,day;
intflag=1;/*是否输出到文件,1为输出,0为不输出*/
longdate1;
intIsLoopYear(intyear);
intCheckDay(intyear,intmonth,intday);
longDate2Long(intyear,intmonth,intday);
intWeek(longday);
intPrintNow(intflag);
intMonthCalendar(intyear,intmonth,intflag);
intYearCalendar(intyear,intflag);
intPrintNumMask(intyear,charch,FILE*fp);
PrintNow(flag);/*输出当月月历并输出时间,flag=1代表输出到文件*/
printf("year=");
scanf("%d",&year);
YearCalendar(year,flag);/*输出2010年年历,flag=1代表输出到文件*/
getch();
}
/*判断闰年*/
intIsLoopYear(intyear)
{
returnyear%400==0||(year%100&&year%4==0);
}
/*检查日期的合法性*/
intCheckDay(intyear,intmonth,intday)
{
intIsLoopYear(intyear);
/*年月日大于零,月份为1-12,日期为1至当月最大的天数,注意二月份的闰月*/
if(year>=0&&month>0&&month<=12&&day>0&&\
day<=(DaysInMonth[month]+(month==2&&IsLoopYear(year))))
return1;
else
return0;
}
/*返回year年month月day日到0000年1月0日(抽象的时间)的天数*/
longDate2Long(intyear,intmonth,intday)
{
longdays;
days=year*365l+year/4-year/100+year/400+(year>0);/*year年1月0日经历的天数,0年是闰年*/
days+=DaysInYear[month-1]+(month>2&&IsLoopYear(year))+day;/*加上月份以及天数*/
returndays;
}
/*计算星期*/
intWeek(longdays)
{
return(days+5)%7;
}
/*输出现在时刻,并输出当月日历*/
intPrintNow(intflag)
{
time_tnow;
structtm*tm_1;
intWeek(longday);
intCheckDay(intyear,intmonth,intday);
longDate2Long(intyear,intmonth,intday);
intMonthCalendar(intyear,intmonth,intflag);
time(&now);
tm_1=localtime(&now);
MonthCalendar(tm_1->tm_year+1900,tm_1->tm_mon+1,flag);
printf("今天是:
%4d年%02d月%02d日,星期%s\n",tm_1->tm_year+1900,tm_1->tm_mon+1,tm_1->tm_mday,WeekInfoChs[tm_1->tm_wday]);
printf("当前时间是:
%02d时%02d分%02d秒\n",tm_1->tm_hour,tm_1->tm_min,tm_1->tm_sec);
return1;
}
/*输出月历*/
intMonthCalendar(intyear,intmonth,intflag)/*flag=1时,写文件*/
{
inti,k,day,week;
longdays;
charfilename[80];
intWeek(longday);
intCheckDay(intyear,intmonth,intday);
longDate2Long(intyear,intmonth,intday);
FILE*fp;
if(flag)
{
sprintf(filename,"%04d_%02d.txt",year,month);
fp=fopen(filename,"w");
if(fp==NULL)
{
printf("FileOpenErrorinFunction:
MonthCalendar\nPressanykeytoexit:
");
getch();
exit(-1);
}
}
day=1;
if(!
CheckDay(year,month,day))
{
printf("Format:
%d-%d-1(YYYY-MM-DD)isinvaildinFunction:
MonthCalendar\n",year,month);
return0;
}
days=Date2Long(year,month,day);
week=Week(days);
k=(4*7-9)/2;
for(i=0;i filename[i]=''; filename[k]='\0'; printf("MonthCalendar: \n%s%d--%s\n",filename,year,MonthInfo[month]); if(flag) fprintf(fp,"%s%d--%s\n",filename,year,MonthInfo[month]); for(i=0;i<7;i++) { printf("%s",WeekInfoEng[i]); if(flag) fprintf(fp,"%s",WeekInfoEng[i]); } printf("\n"); if(flag) fprintf(fp,"\n"); for(i=0;i { printf(""); if(flag) fprintf(fp,""); } for(i=day;i<=DaysInMonth[month]+(month==2)*(IsLoopYear(year));i++)/*闰年的2月份,要加一*/ { printf("%3d",i); if(flag) fprintf(fp,"%3d",i); if((i+week)%7==0) { printf("\n"); if(flag); fprintf(fp,"\n"); } } printf("\n"); if(flag) { fprintf(fp,"\n"); fclose(fp); } return1; } /*输出年历*/ intYearCalendar(intyear,intflag) { intmonth_col=2;/*每行几个月历*/ intspace_col=4;/*两个月历的空格数*/ intmonth_row=(int)ceil(12.0/month_col); intline,end_day[13],keepgoing[13]={1}; inti,j,k,month,day[13],week[13]; longdays[13]; charspace[3][80]; intWeek(longday); intCheckDay(intyear,intmonth,intday); longDate2Long(intyear,intmonth,intday); intPrintNumMask(intyear,charch,FILE*fp); FILE*fp; if(flag) { charfilename[80]; sprintf(filename,"%04d.txt",year); fp=fopen(filename,"w"); if(fp==NULL) { printf("FileOpenErrorinFunction: YearCalendar\nPressanykeytoexit: "); getch(); exit(-1); } } for(month=1;month<=12;month++) { day[month]=1; if(! CheckDay(year,month,day[month])) { printf("Format: %d-%d-1(YYYY-MM-DD)isinvaildinFunction: YearCalendar\n",year,month); return0; } days[month]=Date2Long(year,month,day[month]); week[month]=Week(days[month]); keepgoing[month]=1; } k=(7*4-3)/2; for(i=0;i space[0][i]=''; space[0][i]='\0'; for(i=0;i<7*4-3-k;i++)/*月份标识后空格*/ space[1][i]=''; space[1][i]='\0'; for(i=0;i space[2][i]=''; space[2][i]='\0'; PrintNumMask(year,'*',stdout); PrintNumMask(year,'*',fp); month=1; for(i=0;i { for(j=0;j { printf("%s%s%s",space[0],MonthInfo[month+j],space[1]);/*前导空格,月份缩写,后导空格*/ if(flag) fprintf(fp,"%s%s%s",space[0],MonthInfo[month+j],space[1]); if(j { printf("%s",space[2]); if(flag) fprintf(fp,"%s",space[2]); } } printf("\n");/*换行*/ if(flag) fprintf(fp,"\n"); for(j=0;j { for(k=0;k<7;k++)/*星期的缩写*/ { printf("%s",WeekInfoEng[k]); if(flag) fprintf(fp,"%s",WeekInfoEng[k]); } if(j { printf("%s",space[2]); if(flag) fprintf(fp,"%s",space[2]); } } printf("\n");/*换行*/ if(flag) fprintf(fp,"\n"); for(j=0;j { for(k=0;k<7;k++)/*横线*/ { printf("____",WeekInfoEng[k]); if(flag) fprintf(fp,"____",WeekInfoEng[k]); } if(j { printf("%s",space[2]); if(flag) fprintf(fp,"%s",space[2]); } } printf("\n");/*换行*/ if(flag) fprintf(fp,"\n"); for(j=0;j { for(k=0;k { printf(""); if(flag) fprintf(fp,""); } for(k=1;k<=7;k++) { printf("%3d",k); if(flag) fprintf(fp,"%3d",k); if((k+week[month+j])%7==0) { end_day[month+j]=k+1; printf("%s",space[2]); if(flag) fprintf(fp,"%s",space[2]); break; } } } printf("\n");/*换行*/ if(flag) fprintf(fp,"\n"); for(line=0;line<5;line++) { for(j=0;j { if(keepgoing[month+j]==0)/*补一行空格行*/ for(k=0;k<7;k++) { printf(""); if(flag) fprintf(fp,""); } else { for(k=end_day[month+j];k<=DaysInMonth[month+j]+(month==2)*(IsLoopYear(year));k++) { printf("%3d",k); if(flag) fprintf(fp,"%3d",k); if((k+week[month+j])%7==0) { end_day[month+j]=k+1; break; } } if(k>=DaysInMonth[month+j]+(month==2)*(IsLoopYear(year))) keepgoing[month+j]=0; if(k>DaysInMonth[month+j]+(month==2)*(IsLoopYear(year)))/*补空格*/ { for(;k<100;k++) { printf(""); if(flag) fprintf(fp,""); if((k+week[month+j])%7==0) break; } } } if(j { printf("%s",space[2]); if(flag) fprintf(fp,"%s",space[2]); } } printf("\n");/*换行*/ if(flag) fprintf(fp,"\n"); /*每行中各个月份是否都已经输出完毕*/ k=0; for(j=0;j k+=keepgoing[month+j]; if(k==0) break; } month+=month_col; printf("\n");/*换行*/ if(flag) fprintf(fp,"\n"); } if(flag) fclose(fp); return1; } /*数字模输出*/ intPrintNumMask(intyear,charch,FILE*fp) { /*5*5数字模*/ intmask[10][5]={{31,17,17,17,31},{1,1,1,1,1},\ {31,1,31,16,31},{31,1,31,1,31},\ {17,17,31,1,1},{31,16,31,1,31},\ {31,16,31,17,31},{31,1,1,1,1},\ {31,17,31,17,31},{31,17,31,1,31}}; intdigit[16]={0}; charspace=''; inti,j,k,n; n=0; while(year) { digit[n++]=year%10; year/=10; } for(i=0;i<5;i++)/*行*/ { for(k=0;k { for(j=0;j<5;j++)/*列*/ { if(mask[digit[n-1-k]][i]&(1<<(4-j))) fprintf(fp,"%c",ch); else fprintf(fp,"%c",space); } fprintf(fp,"%c",space); } fprintf(fp,"\n"); } return1; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- include