万年カレンダー
万年カレンダーの日にちが、一日ずれて表示されますのでその原因を教えてください。
void main()
{
int nen,tuki,niti;
int ff,i,n;
int carender[6][7];
niti=0;
for(i=0;i<6;i++)for(n=0;n<7;n++) carender[i][n]=0;
printf("西暦(4桁)→");
scanf("%d",&nen);
printf("month:");
scanf("%d",&tuki);
ff=youbi_chk(nen,tuki,1);
for(i=ff;i<7;i++) {carender[0][i]=niti;++niti;}
for(n=1;n<6;n++){
for(i=0;i<7;i++){
if(niti<=niti_chk(tuki,nen))
{carender[n][i]=niti;++niti;}}
}
printf(" SUN MON TUE WED THU FRI SAT\n");
for(n=0;n<6;n++){
for(i=0;i<7;i++) if(carender[n][i]==0)printf(" ");else printf("%4d",carender[n][i]);
printf("\n");}
}
int youbi_chk(int y,int m,int d)
{
int youbi;
if(m<3)
{y--; m+=10;}
else
{m-=2;}
youbi=(y+(y/4)-(y/100)+(y/400)+(13*m-1)/5+d)%7;
return youbi;
}
int uru_chk(int y)
{
if(y%400==0) return 1;
if(y%100==0) return 0;
if(y%4==0) return 1;
return 0;
}
int niti_chk(int m,int y)
{
int hi[12]={31,28,31,30,31,30,31,31,30,31,30,31};
hi[1]+=uru_chk(y);
return hi[m-1];
}
プロトタイプ宣言は、省いてます。
お礼
解決しました。