根据所给的年月,打印该月份的日历表
View Code
#include<stdio.h> int Is_Leap_Year(int year) { if(year % 4 == 0) { if(year % 100 == 0) { if(year % 400 == 0) return 1; else return 0; } else return 1; } else return 0; } int Get_Week(int year,int month,int day) { int leap,week; int y; int mon1[12] = {0,3,3,6,1,4,0,3,5,0,3,5};//此处为闰年时的月基数 int mon2[12] = {0,3,4,0,2,5,0,3,6,1,4,6};//此处为平年时的月基数 //另外,平年时的年基数为1,闰年时的月基数为2; leap = Is_Leap_Year(year); if(leap) { y = year + year / 4 + year /400 - year / 100 - 2 + mon2[month - 1] + day; } else { y = year + year / 4 + year /400 - year / 100 - 1 + mon1[month - 1] + day; } week = y % 7; return week; } int Day(int month) { switch(month) { case 1:return 31; case 2:return 28; case 3:return 31; case 4:return 30; case 5:return 31; case 6:return 30; case 7:return 31; case 8:return 31; case 9:return 30; case 10:return 31; case 11:return 30; case 12:return 31; } } int main() { int year,i,month,week,temp; scanf("%d%d",&year,&month); week = Get_Week(year,month,1); if(week == 0) temp = 7; else temp = week; printf(" %04d年日历\n",year); printf(" ========== \n"); printf(" %2d月\n",month); printf("--------------------------------------\n"); printf("日 一 二 三 四 五 六\n"); int day; day = Day(month); if(month == 2) { if(Is_Leap_Year(year)) day += 1; } for(i = 0;i < temp; i++) { printf(" "); if(i) printf(" "); } for(i = 1;i <= day;i++) { if(temp != 0) printf(" "); printf("%-2d",i); if(temp == 6) { printf("\n"); temp = 0; } else temp++; } printf("\n"); printf("--------------------------------------\n"); return 0; }