黑色星期五
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了黑色星期五相关的知识,希望对你有一定的参考价值。
题目:黑色星期五
已知1900年1月1日是星期一,下面的函数count_5_13(int year)用于计算给定的年份year中有几个"黑色星期五"。
"黑色星期五"指既是13日又是星期五的日期。
程序中函数isLeapYear(int year),其功能是判断给定年份是否为闰年,返回值为true(或false)分别表示year是(或不是)闰年。
分析思路
根据1900年1月1号是星期1,推算出year年1月13号是星期几,如果是星期五,则是一个黑色星期五,
然后推算year年每月的13号(2月到12月)是否是星期五,如果是则是黑色星期五。
/* 题目:黑色星期五 已知1900年1月1日是星期一,下面的函数count_5_13(int year)用于计算给定的年份year中有几个"黑色星期五"。 "黑色星期五"指既是13日又是星期五的日期。 程序中函数isLeapYear(int year),其功能是判断给定年份是否为闰年,返回值为true(或false)分别表示year是(或不是)闰年。 分析思路 根据1900年1月1号是星期1,推算出year年1月13号是星期几,如果是星期五,则是一个黑色星期五, 然后推算year年每月的13号(2月到12月)是否是星期五,如果是则是黑色星期五。 */ #include <iostream> using namespace std; int count_5_13(int year) ; //获取year这一年中有几个黑色星期五 bool isLeapYear(int year); //判断闰年的函数,是闰年返回真,非闰年返回假 int main() { int year; cout<<"请输入您要判断的年(1900以后的年,包括1900年)"; cin>>year; cout<<"黑色星期五的个数:"<<count_5_13(year)<<endl; //输出year这一年中有几个黑色星期五 return 0; } int count_5_13(int year) //函数定义 { int date; // date为0表示星期日,为1~6分别表示星期一至星期六 long days = 0; // days记录天数 int m, y, c = 0; // c用于表示黑色星期五的个数 if (year < 1900) return -1; //计算从1900年1月1日起,至给定年份year的1月13日间隔的天数 days = 12; for (y = 1900; y < year; y++) { days += 365; if (isLeapYear(y)) days++ ; } //此时的days是year这一年中1月13号到1900年1月1日之间的天数 date = ((days % 7) + 1) % 7; // 算出给定年份year的1月13日是星期几 c = (date==5) ? 1 : 0; //如果此year的1月13号正好是星期5,则是一个黑色星期五 if(date==5) { c=1; cout<<year<<"-"<<1<<"-"<<13<<" 是星期五"<<endl; } else c=0; for(m = 2; m<=12; m++) //再从2月到12月依次判断每月的13号是否是星期五 { switch (m-1) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: days = 31; break; case 4: case 6: case 9: case 11: days = 30; break; case 2: days = 28; if (isLeapYear(y)) days = 29; break; } date =((days % 7) + date) % 7; if (date==5) { c++; cout<<year<<"-"<<m<<"-"<<13<<" 是星期五"<<endl; } } return c; } bool isLeapYear(int year) //判断闰年的函数定义 { if((year%4==0&&year%100!=0)||year%400==0) return true; else return false; }
以上是关于黑色星期五的主要内容,如果未能解决你的问题,请参考以下文章