C万年暦グレゴリオ版

1950 ワード

#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 
",x,y); printf("----------------------
"); printf("               
"); 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("
");     } } 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
",2015,i);    printf(" 7  1  2  3  4  5  6 
");    printf("---------------------
" );     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("
");      if(x[j]==0)printf("   ");         if(x[j]!=0&&x[j]<max[i])printf("%3d",x[j]);    }   printf("-----happy new year---
");   } } 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は1次元印刷とパラメータのために少なくなる関数yearを準備して複数の扇出利用があります