
#include <stdio.h> |
# define shuru(A) if(A<10)printf(" *%d*",A);else printf(" *%d*",A); |
int monthday[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; |
void jinggong(int a,int b,int c); |
int run(int a); |
int weekd(int a); |
int main (){ |
int y,m,d,weekday,mday=1,month=1,line=0,i,j=0,k,h,t; |
char monthname[12][4]={"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"}; |
int daya[6][7]={{0}},dayb[6][7]={{0}},dayc[6][7]={{0}}; |
scanf("%d-%d-%d",&y,&m,&d); |
weekday=weekd(y); |
if(run(y)==1)monthday[2]=29; |
printf("+-----------------------------------------------------------------------------------------+\n"); |
if(y>3000||y<1000||m<1||m>12||d<0||d>monthday[m]){ |
jinggong(y,m,d); |
return 0; |
} |
int one,two,three,four; |
one=y/1000;two=(y-1000*one)/100;three=(y-1000*one-100*two)/10;four=y-1000*one-100*two-10*three; |
|
|
printf("| |\n"); |
printf("| Calendar of Year [ %d %d %d %d ] |\n",one,two,three,four); |
printf("| |\n"); |
for(i=0;i<4;i++){ |
while(mday<=monthday[month]){ |
daya[line][weekday%7]=mday; |
weekday++; |
if(weekday%7==1)line++; |
mday++; |
} |
month++; |
mday=1; |
line=0; |
while(mday<=monthday[month]){ |
dayb[line][weekday%7]=mday; |
weekday++; |
if(weekday%7==1)line++; |
mday++; |
} |
month++; |
mday=1; |
line=0; |
while(mday<=monthday[month]){ |
dayc[line][weekday%7]=mday; |
weekday++; |
if(weekday%7==1)line++; |
mday++; |
} |
month++; |
mday=1; |
line=0; |
printf("+-----------------------------+-----------------------------+-----------------------------+\n"); |
printf("| %s | %s | %s |\n",monthname[j],monthname[j+1],monthname[j+2]); |
printf("+-----------------------------+-----------------------------+-----------------------------+\n"); |
printf("| Mon Tue Wed Thu Fri Sat Sun | Mon Tue Wed Thu Fri Sat Sun | Mon Tue Wed Thu Fri Sat Sun |\n"); |
j=j+3; |
for(line=0;line<6;line++){ |
printf("|"); |
if(i*3+1==m)t=1; |
else t=0; |
for(k=1;k<7;k++){ |
if(daya[line][k]==0){ |
if(t==1&&daya[line][k-1]==d&&k!=1)printf(" "); |
else printf(" "); |
} |
else if((t==1)&&daya[line][k]==d){ |
shuru(daya[line][k]) |
}else if(t==1&&k!=1&&daya[line][k-1]==d)printf("%3d",daya[line][k]); |
else printf("%4d",daya[line][k]); |
} |
if(t==1&&daya[line][0]==0&&daya[line][6]==d)printf(" "); |
else if(daya[line][0]==0)printf(" "); |
else if(t==1&&daya[line][0]==d)shuru(daya[line][0]) |
else if(t==1&&daya[line][6]==d)printf("%3d ",daya[line][0]); |
else printf("%4d ",daya[line][0]); |
printf("|"); |
if(i*3+2==m)t=1; |
else t=0; |
for(k=1;k<7;k++){ |
if(dayb[line][k]==0){ |
if(t==1&&dayb[line][k-1]==d&&k!=1)printf(" "); |
else printf(" "); |
} |
else if((t==1)&&dayb[line][k]==d){ |
shuru(dayb[line][k]) |
}else if(t==1&&k!=1&&dayb[line][k-1]==d)printf("%3d",dayb[line][k]); |
else printf("%4d",dayb[line][k]); |
} |
if(t==1&&dayb[line][0]==0&&dayb[line][6]==d)printf(" "); |
else if(dayb[line][0]==0)printf(" "); |
else if(t==1&&dayb[line][0]==d)shuru(dayb[line][0]) |
else if(t==1&&dayb[line][6]==d)printf("%3d ",dayb[line][0]); |
else printf("%4d ",dayb[line][0]); |
printf("|"); |
if(i*3+3==m)t=1; |
else t=0; |
for(k=1;k<7;k++){ |
if(dayc[line][k]==0){ |
if(t==1&&dayc[line][k-1]==d&&k!=1)printf(" "); |
else printf(" "); |
} |
else if((t==1)&&dayc[line][k]==d){ |
shuru(dayc[line][k]) |
}else if(t==1&&k!=1&&dayc[line][k-1]==d)printf("%3d",dayc[line][k]); |
else printf("%4d",dayc[line][k]); |
} |
if(t==1&&dayc[line][0]==0&&dayc[line][6]==d)printf(" "); |
else if(dayc[line][0]==0)printf(" "); |
else if(t==1&&dayc[line][0]==d)shuru(dayc[line][0]) |
else if(t==1&&dayc[line][6]==d)printf("%3d ",dayc[line][0]); |
else printf("%4d ",dayc[line][0]); |
printf("|"); |
printf("\n"); |
} |
for(k=0;k<6;k++){ |
for(h=0;h<7;h++){ |
daya[k][h]=0; |
dayb[k][h]=0; |
dayc[k][h]=0; |
} |
} |
line=0; |
|
} |
printf("+-----------------------------+-----------------------------+-----------------------------+\n"); |
jinggong(y,m,d); |
} |
void jinggong(int a,int b,int c){ |
printf("| |\n"); |
if(a>3000||a<1000||b<1||b>12||c<0||c>monthday[b]) |
printf("| ** |\n"); |
else |
printf("| ** %d-%02d-%02d |\n",a,b,c); |
printf("| *** ** |\n"); |
printf("| *** ** ********* ********** *********** |\n"); |
printf("| *** **** *** *** *** ** *** ** |\n"); |
printf("| ** ** **** ***** *** *** *** ** *** * |\n"); |
printf("| ** *** **** ******** *** *** *** ** *** * |\n"); |
printf("| ** ** ** ***** ******* *** *** *** *** |\n"); |
printf("| ******* ** *** *** *** *** *** *** |\n"); |
printf("| ** ******** ** *** *** *** *** |\n"); |
printf("| **** ***** ** ******** *** *** |\n"); |
printf("| ******** *** ** *** *** *** *** |\n"); |
printf("| ** *** ******** ** *** ** *** *** |\n"); |
printf("| ****** ** ** ** *** *** *** *** |\n"); |
printf("| ****** ******* ** *** *** *** *** |\n"); |
printf("| ** ** ** ** ** *** *** *** *** |\n"); |
printf("| *** ** ** ** *********** *** *** *** *** |\n"); |
printf("| ** ** ***** ** ************ ** *** *** *** *** |\n"); |
printf("| ** ** ** *** **** ********** ********* ***** |\n"); |
printf("| ** ** *** |\n"); |
printf("| ** ** ***** |\n"); |
printf("| ** *** http://online.bit.edu.cn/ |\n"); |
printf("| ** |\n"); |
printf("| |\n"); |
printf("+-----------------------------------------------------------------------------------------+\n"); |
} |
|
int run(int a){ |
if((a%4==0&&a%100!=0)||(a%400==0)) return 1; |
else return 0; |
} |
int weekd(int a){ |
int w; |
w=((a-1)*365+(a-1)/4-(a-1)/100+(a-1)/400); |
return w%7+1; |
} |




初级程序员
by: 藤原千花 发表于:2020-04-20 20:28:17 顶(23) | 踩(23) 回复
666
回复评论