include main(){void print_head(int x,int y); /*打印头文件*/void print_month(int x,int y); /*打印月历*/int days_of_month(int x,int y); /*计算指定年月的天数*/int leap(int x,int y); /*计算指定年月1号是星期几*/int i,days,year,month,firstday;printf(" 本程序由winner(:774686087)写于2011-9-23\n") ;char choose; do {printf ("\n\n请输入年份(0000~9999):\n\n"); scanf ("%d",&year); if (year<0||year>9999) printf ("警告:错误,请从新输入!");} while (year<0||year>9999); printf ("\n\n"); do {printf ("请输入月份(0~12)\n\n\n"); scanf ("%d",&month); if (month<=0||month>12) printf ("警告:错误,请再次输入!");} while (month<=0||month>12); printf ("\n\n"); days=days_of_month(year,month); /*调用函数*/ firstday=leap(year,month); print_head(year,month); print_month(firstday,days); choose=getchar(); printf ("\n\n\n"); printf("继续吗?(y/n):\n\n"); scanf("%c",&choose); if (choose=='y'||choose=='Y') main();}days_of_month(int x,int y){int z;switch (y){case 1: case 3: case 5: case 7: case 8: case 10: case 12: z=31;break; case 4: case 6: case 9: case 11: z=30;break; case 2: {if ((x%4==0&&x%100!=0)||(x%400==0)) z=29; else z=28;break; } }return z;}leap(int x,int y){int z,i,moday;z=(x+(x-1)/4-(x-1)/100+(x-1)/400)%7;for (i=1;i