請算出任一個世紀有多少個黑色星期五(每月13日且為星期五)。世紀的算法為元年至百年,例如19世紀為1801年至1900年,20世紀為190

1年至2000年,而21世紀為2001年至2100年。每年的第一天為星期幾的計算公式為:
week = (y + (int)((y-1)/4) - (int)((y-1)/100) + (int)((y-1)/400)) % 7
其中y為年份,例如y=1901時,week=2,代表1901/1/1為星期二,y=2006時,week=0,代表2006/1/1為星期日。閏年的計算方式,

可以被4整除的那一年為閏年,可以被100整除不算是閏年,但可以被400整除的那一年又算是閏年,例如:1894不是閏年,1896是閏年,

1900不是閏年,2000是閏年。本題請輸入任一個世紀,計算並輸出共有幾次黑色星期五,輸出入格式如下:

範例:
輸入:請輸入第幾世紀: 21 
輸出:共有172次黑色星期五

#include<stdio.h>
#include<stdlib.h>

int date[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int a/*世紀*/,b/*閏年*/,c/*第一天*/,d/*年*/,e=1/*日*/,f/*月*/,g=0,h;

main()
{
 printf("請輸入第幾世紀:");
 scanf("%d",&a);
 
 a=(a*100)-99;
 
 for(d=a;d<a+100;d++)
 {
  c = (d + (int)((d-1)/4) - (int)((d-1)/100) + (int)((d-1)/400)) % 7; 
  b=!(d%4)&&(d%100)||!(d%400)?1:0;

  if(b==1)
  {
  date[1]=29;       
  }
  else
  {
  date[1]=28;    
  }

   for(f=0;f<12;f++)
    {
                   
         for(e=1;e<=date[f];e++)
         {
          if(e==13&&c==5)
           {g++;}
  
          if(c==7)
           {c=0;}
           c++;
        }
 
    }
 }
 printf("%d\n",g);
 system("pause");
 }

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 彩虹 的頭像
    彩虹

    小酌C語言

    彩虹 發表在 痞客邦 留言(1) 人氣()