一道简单的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 ; }
时间: 2024-08-07 04:09:23