include.docx

上传人:b****8 文档编号:30499736 上传时间:2023-08-16 格式:DOCX 页数:17 大小:16.90KB
下载 相关 举报
include.docx_第1页
第1页 / 共17页
include.docx_第2页
第2页 / 共17页
include.docx_第3页
第3页 / 共17页
include.docx_第4页
第4页 / 共17页
include.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

include.docx

《include.docx》由会员分享,可在线阅读,更多相关《include.docx(17页珍藏版)》请在冰豆网上搜索。

include.docx

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;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 公共行政管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1