题目详情 - [模拟题] 国庆节是星期几 - 核OJ (hetao101.com)
题目大意:1949年的国庆节是星期六,输入大于1949年的年份n,求第n年的国庆节是星期几
思路分析:
题目已经给了我们一些提示,求国庆节是星期几,可以计算 1949 年以后每年的天数,把天数求和然后加上 6,用这个数字对 7 求余数,就是结果。整个编写过程需要解决下面几个问题:
1.如何判断平年和闰年
用闰年判断方法,可以写出if语句,进行判断。
具体判断方法:
四年一闰,百年不闰,四百年又闰。翻译:可以整除4并且不能整除一百的年份是闰年,可以整除400的年份也是闰年。
依据上面方法,就能写出平年、闰年的判断函数。
2.如何计算总天数
使用一个for循环,遍历1950(1949年的下一年)到年份n之间的所有年份,在循环中使用判断函数判断是平年还是闰年,再相应地给计数变量加上365或366,就可以了。
功能实现:
1.定义需要用到的变量,输入年份n
我们需要计算总天数,所以,需要两个int类型的变量n和day,n保存输入的年份,day用于计算总天数。变量定义:
int y,day;
输入年份n:
cin >> y;
2.平年、闰年的判断函数
在函数中使用参数year,表示年份,写一个if语句即可。函数要用bool类型的函数,才能返回判断结果,闰年返回true,平年返回false,代码如下:
bool pr(int year)
{
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
{
return true;
}
return false;
}
3.计算总天数
按前面思路遍历1950到n的每一年,再相应地加上天数,就可以计算出总天数。主要代码如下:
for (int i = 1950;i <= y;i++)
{
if (pr(i))
{
day += 366;
}
else
{
day += 365;
}
}
4.总天数加6对7取余再输出
直接在输出内容上写(day+6)%7就可以:
cout << (day + 6) % 7;
最后的测试:
运行程序,输入样例中的2019,可以发现,程序输出了一个2,与样例一致。
可以再使用自己的样例,输入2024,输出2,而今年国庆节就是星期二,程序没有问题了
提交,AC!