黑色星期五统计 - 13 号星期五计算器
"黑色星期五" 统计 - 13 号星期五计算器\n\n有些西方人比较迷信,如果某个月的 13 号正好是星期五,他们就会觉得不太吉利,用古人的说法,就是"诸事不宜"。请你编写一个程序,统计出在某个特定的年份中,出现了多少次既是 13 号又是星期五的情形,以帮助你的迷信朋友解决难题。\n\n说明:\n\n* 一年有 365 天,闰年有 366 天,所谓闰年,即能被 4 整除且不能被 100 整除的年份,或是既能被 100 整除也能 400 整除的年份;\n* 已知 1998 年 1 月 1 日是星期四,用户输入的年份肯定大于或等于 1998 年。\n\n输入\n输入只有一行,即某个特定的四位数的年份(大于或等于 1998 年)。\n\n输出\n输出只有一行,即在这一年中,出现了多少次既是 13 号又是星期五的情形。\n\n样例\n输入\n1998\n输出\n3\n输入\n4096\n输出\n3\n\nC++ 代码内容:\ncpp\n#include <iostream>\n\nusing namespace std;\ \n// 判断是否为闰年\nboolean isLeapYear(int year) {\n if (year % 4 == 0 && year % 100 != 0) {\n return true;\n } else if (year % 400 == 0) {\n return true;\n } else {\n return false;\n }\n}\n\n// 获取某个月的天数\nint getDaysOfMonth(int year, int month) {\n if (month == 2) {\n if (isLeapYear(year)) {\n return 29;\n } else {\n return 28;\n }\n } else if (month == 4 || month == 6 || month == 9 || month == 11) {\n return 30;\n } else {\n return 31;\n }\n}\n\n// 获取某一天是星期几,返回值为 0-6,0 表示星期日,1 表示星期一,以此类推\nint getWeekday(int year, int month, int day) {\n if (month < 3) {\n month += 12;\n year--;\n }\n int c = year / 100;\n year %= 100;\n int week = year + year / 4 + c / 4 - 2 * c + 26 * (month + 1) / 10 + day - 1;\n week = (week % 7 + 7) % 7;\n return week;\n}\n\nint main() {\n int year;\n cin >> year;\n\n int count = 0;\n for (int month = 1; month <= 12; month++) {\n if (getWeekday(year, month, 13) == 5) {\n count++;\n }\n }\n\n cout << count << endl;\n\n return 0;\n}\n\n\n使用此工具,你可以轻松地确定任何年份中 13 号星期五的次数,并帮助你的迷信朋友消除他们的担忧!
原文地址: https://www.cveoy.top/t/topic/pA3h 著作权归作者所有。请勿转载和采集!