C 万年历 阳历版

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void 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  fun()
{
int i,j;
int max[13]={0,30,31,32,33,30,30,30,30,30,30,30,30};
int star[13]={1,2,3,4,5,5,1,6,5,4,3,2,1,};
int x[42]={0};
for(i=1;i<=12;i++)
  {printf("%d year %d math\n",2015,i);
   printf(" 7  1  2  3  4  5  6 \n");
   printf("---------------------\n" );
    for(j=star[i];j<42;j++)
   {    x[j]=x[j-1]+1;}
    for(j=0;j<42;j++)
   { 
     if(j>0&&j%7==0)printf("\n");
     if(x[j]==0)printf("   ");   
     if(x[j]!=0&&x[j]<max[i])printf("%3d",x[j]);
   }
  printf("-----happy new year---\n");
  }
}
void main()
{
int max[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int year=2016;
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=3;i<=12;i++)star[i]++;}
for(i=1;i<year;i++)
{if(Year(i))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]); 
 }
//fun();
}

fun为一维打印 并传参准备变少  函数year有多扇出利用

你可能感兴趣的:(万年历)