#include <stdio.h>
#include <stdlib.h>
#include <dos.h>
int fact_1(int year,int m);
int fact_2(int c,int y,int m);
int main(int argc, char *argv[]) {
int c,y,m,year,day,i,w;
printf("请输入想要的年月:");
scanf("%2d%2d %d",&c,&y,&m);
year=100*c+y;
while(fact_1(year,m)==0){
system("cls");
printf("刚刚输入错误,请输入想要的年月:");
scanf("%2d%2d %d",&c,&y,&m);
year=100*c+y;
}
switch(m){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12 :day=31;break;
case 4:
case 6:
case 9:
case 11:day=30;break;
case 2:if(((year%4==0)&&(year%100!=0))||(year%400==0)){
day=29;
}else{
day=28;
}
break;
default: break;
}
w=fact_2(c,y,m);
printf("星期日 星期一 星期二 星期三 星期四 星期五 星期六\n");
for(i=1;i<=w;i++) {
printf(" ");
}
for(i=1;i<=day;i++){
printf("%-8d",i);
if((i+w-7)%7==0){
printf("\n\n\n\n");
}
}
return 0;
}
int fact_1(int year,int m){
if((year<=1582)||(m<=0&&m>12))
{
return 0;
}
return 1;
}
int fact_2(int c,int y,int m){
int w;
if(m==1||m==2){
y=y-1;
m=m+12;
}
w=c/4-2*c+y/4+y+26*(m+1)/10;
while(w<0){
w+=7;
w%=7;
return w;
}
}