《万年历源代码.doc》由会员分享,可在线阅读,更多相关《万年历源代码.doc(7页珍藏版)》请在金锄头文库上搜索。
1、万年历源代码#includeint main()void printMonthBody(int year, int month,int week);int getTotalNumberOfDays(int year, int month);int year,month,sum,week;printf(请输入您要查询的年份和月份,以/号分开,如1800/1:); scanf(%d/%d,&year,&month);sum=getTotalNumberOfDays(year,month);week=(sum+3)%7;printf(n);printf(%d年%d月的日历表如下:n,year,mon
2、th);printf(n);printMonthBody(year,month,week);return 0;int getTotalNumberOfDays(int year, int month)int i,sum,num1=0,num2=0;for(i=1800;iyear;i+)if(i%4=0&i%100!=0)|(i%400=0) num1+; else num2+;sum=num1*365+num2*366;if(month=1) return sum;else if(month=2) return sum+31;elseif(year%4=0&year%100!=0)|(yea
3、r%400=0)switch(month)case 3:sum+=59;break; case 4:sum+=90;break; case 5:sum+=120;break; case 6:sum+=151;break; case 7:sum+=181;break; case 8:sum+=212;break; case 9:sum+=243;break; case 10:sum+=273;break; case 11:sum+=304;break; case 12:sum+=334;break;return sum;else switch(month)case 3:sum+=60;break
4、; case 4:sum+=91;break; case 5:sum+=121;break; case 6:sum+=152;break; case 7:sum+=182;break; case 8:sum+=213;break; case 9:sum+=244;break; case 10:sum+=274;break; case 11:sum+=305;break; case 12:sum+=335;break; return sum;void printMonthBody(int year, int month,int week)void printline();int i,k,m;in
5、t a50;printf(星期日 星期一 星期二 星期三 星期四 星期五 星期六n); printline();if(year%4=0&year%100!=0)|(year%400=0)switch(month)case 1: case 3: case 5: case 7: case 8: case 10: case 12: for(i=0;iweek;i+) printf( );for(k=i;iweek+31;i+) ai=i-week+1;m=i; for(i=k;im;i+)if(i%7=0) printf(n);printline();printf(%-8d,ai);printf(n
6、);printline();printf(n);break;case 2: for(i=0;iweek;i+) printf( );for(k=i;iweek+28;i+) ai=i-week+1;m=i; for(i=k;im;i+)if(i%7=0) printf(n);printline();printf(%-8d,ai);printf(n);printline();printf(n);break;case 4: case 6: case 9: case 11:for(i=0;iweek;i+) printf( );for(k=i;iweek+30;i+) ai=i-week+1;m=i
7、; for(i=k;im;i+)if(i%7=0) printf(n);printline();printf(%-8d,ai);printf(n);printline();printf(n);break;else switch(month)case 1: case 3: case 5: case 7: case 8: case 10: case 12: for(i=0;iweek;i+) printf( );for(k=i;iweek+31;i+) ai=i-week+1;m=i; for(i=k;im;i+)if(i%7=0) printf(n);printline();printf(%-8
8、d,ai);printf(n);printline();printf(n);break;case 2: for(i=0;iweek;i+) printf( );for(k=i;iweek+29;i+) ai=i-week+1;m=i; for(i=k;im;i+)if(i%7=0) printf(n);printline();printf(%-8d,ai);printf(n);printline();printf(n);break;case 4: case 6: case 9: case 11:for(i=0;iweek;i+) printf( );for(k=i;iweek+30;i+) ai=i-week+1;m=i; for(i=k;im;i+)if(i%7=0) printf(n);printline();printf(%-8d,ai);printf(n);printline();printf(n);break;void printline()printf(-n);