#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
int week(int y,int c,int m,int d);
int main()
{
int T[8]={0};
int i=0,m,y,c,d,flag,end,start;
char a;
printf("請輸入開始日期:");
for(i=0;i<9;i++)
scanf("%c",&T[i]);
printf("請輸入結束日期:");
scanf("%d",&end);
y=(T[2]-48)*10+(T[3]-48);
c=(T[0]-48)*10+(T[1]-48);
m=(T[4]-48)*10+(T[5]-48);
d=(T[6]-48)*10+(T[7]-48);
start=c*1000000+y*10000+m*100+d;
if(d<13)
d=13;
else if(d>13)
{
d=13;
m+=1;
}
printf("黑色星期五有:\n");
for(;start<=end;m++)
{
if(m==13)
{
m=1;
y++;
if(y==99)
{
y=0;
c++;
}
}
start=c*1000000+y*10000+m*100+d;
flag=week(y,c,m,d);
if(flag==5)
printf("%d\t",start);
}
a=getche();
return 0;
}
/*
函數功能:用蔡勒公式計算星期幾
輸入:年份後兩位,年份前兩位,月,日
輸出:星期數
*/
int week(int y,int c,int m,int d)
{
int y1,y2,y3,w;
y1=c*100+y;
y2=m;
y3=d;
if(m==1)
{
y-=1;
m=13;
}
else if(m==2)
{
y-=1;
m=14;
}
w=floor(y/4)+y+floor(c/4)-c*2+floor(26*(m+1)/10)+d-1;/*蔡勒公式*/
w=w%7;
if(w<0)
w+=7;
return w;
}