黑色星期五的判定

  一道簡單的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 ;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章