#include
#include
int week(int y,int m,int d);//函数声明
void main()
{
//初始化月份的天数
int monthday[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int y,w,i,m=1,d=1;
printf("请输入一个年份yyyy:\n");
scanf("%d",&y);
//如果是闰年,修改第二个月天数
if ( (y % 4 == 0 && y % 100 != 0)|| y % 400 == 0 ){
monthday[1]=29;
}
for(m=1;m<=12;m++){
//循环打印每个月
printf("\n %d年,%d月\n",y,m);
printf(" 日 一 二 三 四 五 六 \n");
for (d=1;d<=monthday[m-1];d++){
//获取对应的星期
w=week(y,m,d);
if(d==1){
//打印每月第一天前面的空格
for (i=0;i
}
}
printf("%3d ",d);
//每星期换行
if(w==6) printf(" \n");
}
printf("\n\n输入任意字符继续\n");
getch();
}
system("pause");
}
int week (int y,int m,int d)
{
//http://hi.baidu.com/wlzqi/blog/item/65b16b606403df44ebf8f8a2.html
int w;
if((m==1)||(m==2)){
y--;
m+=12;
}
w=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%7;
return w;
}
没有评论:
发表评论