一道簡單的C語言編程練習題,判斷黑色星期五,提示輸入一個年份,然後給出這一年中所有存在的黑色星期五的月份,並且給出黑色星期五的個數。
/* * Author: Nonkey * Time : 2015-08-02 sunday * black friday judge * 要求:輸入一個年份 , 判斷這個年份中是否存在黑色星期五 ,如果有,則輸出總共有 * 幾個,並輸出月份。 * 思路:由於只需要判斷是否有黑色星期五,所以,不必要每個月每一天的推算,黑色星 * 期五當然只出現在13號,所以,只要判斷輸入的年份的每個月中的13號是否有星 * 期五的就行了,判斷星期用蔡勒公式。 * */ #include <stdio.h> int main(void) { int year , moon ,day ,week ,y_in; int i ,count = 0 ; day = 13 ; //總是判斷13號,其他的不管 printf("Pls input year : ") ; scanf("%d",&y_in) ; for(i = 1 ;i <= 12 ;i++) { if(i == 1 || i == 2) { moon = i + 12 ; year = y_in - 1 ; } else { moon = i ; year = y_in ; } if((year < 1752) || (year == 1752 && moon < 9) || (year == 1752 && moon == 9 && day < 3)) week = (day + 2 * moon + 3 * (moon + 1) / 5 + year + year / 4 + 5) % 7 ; else week = (day + 2 * moon + 3 * (moon + 1) / 5 + year + year / 4 - year / 100 + year / 400) % 7 ; week++ ; //除 7 取餘得到的是 0--6 的數字,需要 + 1 來修正到我們習慣的 1 --7 星期表示法 。 if(week == 5) { count++ ; printf("moon : %d\n",i) ; } } if(count == 0) { printf("This year don't have black friday.\n") ; } else printf("All black friday is %d:\n",count) ; return 0 ; }