#include <stdio.h>
#include <stdlib.h>
vod display(int x,int y,int m,int max)
{
int s[6][7]={0};int i=0,j=0;
  s[0][m]=1;//确定每一月的根基 每个月的第一列 
for(j=m;j<7;j++)s[0][j]=(j-m)+s[0][m];
s[1][0]=s[0][6]+1;
for(i=2;i<6;i++)s[i][0]=s[1][0]+(i-1)*7;
  for(i=1;i<6;i++)
  { for(j=1;j<7;j++)
     s[i][j]=s[i][0]+j;
  }

printf("\t%d年  %d月\n",x,y);
printf("----------------------\n");
printf(" 日 一 二 三 四 五 六 \n");
for(i=0;i<6;i++)
  { for(j=0;j<7;j++)
    {
   if(s[i][j]==0)printf("   ");
   if(s[i][j]!=0&&s[i][j]<=max)printf("%3d",s[i][j]);}
   printf("\n");  
  }
}
int Year(int year)
{
if(year%4==0&&year%100!=0||year%400==0)return 1;
else return 0;
}
 
}
void main()
{
int max[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int year=1;
int month=2;//1-12
int star[13]={0,1,32,60,91,121,152,182,213,244,274,304,334};//0-6 
 
int i=1;
int count=0;
 
if(Year(year)) max[2]++;
for(i=1;i<year;i++)
{if(Year(year))count++;}
for(i=1;i<=12;i++)
 {//star[i]= (1+2*i+3*(i+1)/5+year+year/4-year/100+year/400)%7;
  star[i]=(star[i]+(year-1)*365+count)%7;
// display(year,i,star[i],max[i]); 
 }
}

计算STAR处 有2种方法  计算闰年配合时容易错误  公元1年目前是正确的