解题思路: 通过输入日期判断距离指定日期的天数,再根据天数判断星期几;
注意事项: 闰年的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语言考试练习题_保留字母 (C语言代码)浏览:743 |
1908题解浏览:680 |
Hello, world! (C语言代码)浏览:766 |
简单的a+b (C语言代码)浏览:572 |
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:620 |
众数问题 (C语言代码)浏览:717 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:593 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:461 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:680 |
WU-C语言程序设计教程(第三版)课后习题12.5 (C++代码)浏览:1073 |