解题思路: 通过输入日期判断距离指定日期的天数,再根据天数判断星期几;
注意事项: 闰年的2月份会多一天;
参考代码:
#include <iostream> using namespace std; int arr[]={0,31,28,31,30,31,30,31,31,30,31,30,31};//保存每月的最后一天 int week[]={0,1,2,3,4,5,6,7}; int check(int j) { arr[2]=28; //非闰年,2月28天,若为闰年,重新赋值为29即可 if(j%4==0&&j%100!=0||j%400==0)//闰年处理,2月份为29天 { arr[2]=29; return 366; } return 365; } int main() { int year,time=0,cnt=0; cin>>year; for(int i=1998;i<year;i++) { time+=check(i);//过去的几年相加,闰年加366,平年加365 } for(int j=1;j<=12;j++)//今年,遍历每个月 { check(year); for(int k=1;k<=arr[j];k++)//遍历每一天 { time+=k;//这个月的号数代表这个月的天数,直接相加即可,下一次计算的时候记得清理掉之前加的号数 if(k==13&&week[(time+3)%7]==5)//1998,1,1第一天,星期四,天数和星期数,数值上相差 3 ,即第一天的星期数为week[4]=4且号数 k = 13 (号); { cnt++; } if(k<arr[j])//统计完过后,要清理这一天,重新计算天数的时候要减去上一天的号数,如 1998,1,26(25-25+26=26天),而下一个月从1号开始,故上一个月的最后一天不用减,1998,2,1(31+1=32天) time-=k; } } cout<<cnt<<endl; return 0; }//dongdong
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:523 |
【绝对值排序】 (C语言代码)浏览:725 |
C语言程序设计教程(第三版)课后习题7.1 (C语言代码)浏览:520 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:787 |
C语言程序设计教程(第三版)课后习题9.10 (C语言代码)浏览:841 |
简单的a+b (C语言代码)浏览:539 |
GC的苦恼 (C语言代码)浏览:623 |
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:394 |
【出圈】 (C++代码)简单循环浏览:641 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:610 |