日期计算----某月第x个星期x(CCF试题)//c++

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了日期计算----某月第x个星期x(CCF试题)//c++相关的知识,希望对你有一定的参考价值。

//将问题拆解了一下,先求每个月是星期几,再进行接下来的运算,可以一步到位的

 1 #include<iostream>
 2 using namespace std;
 3 //**********节日计算*************
 4 //计算y1年的a月第一天是星期几
 5 int month[12]={31,28,31,30,31,30,31,31,30,31,30,31};
 6 int day(int y1,int a){
 7 int y3=0;
 8 int c1=2;
 9 for(int year=1850;year<y1;year++){
10 int d=365;month[1]=28;
11 if((year%4==0&&year%100!=0)||year%400==0){
12 d=366;month[1]=29;
13 }
14 y3+=d;
15 }
16 for(int i=0;i<a-1;i++){
17 y3+=month[i];
18 }
19 c1+=y3%7;
20 if(c1==8){
21 c1=1;
22 }
23 return c1;
24 }
25 int main(){
26 //节日计算
27 int a,b,c,y1,y2,c2;
28 cin>>a>>b>>c>>y1>>y2;
29 for(int y=y1;y<=y2;y++){
30 month[1]=28;
31 if((y%4==0&&y%100!=0)||y%400==0){
32 month[1]=29;
33 }
34 if(c>day(y,a)){
35 c2=c-day(y,a)+7*(b-1)+1;
36 }
37 else{
38 c2=c-day(y,a)+7*b+1;
39 }
40 if(c2>month[a-1]){
41 cout<<"none"<<endl;
42 }
43 else{
44 cout<<y;
45 if(a<10){
46 cout<<"/0"<<a;
47 }
48 else{
49 cout<<"/"<<a;
50 }
51 if(c2<10){
52 cout<<"/0"<<c2<<endl;
53 }
54 else{
55 cout<<"/"<<c2<<endl;
56 }
57 }
58 }
59 
60 return 0;
61 
62 }

 

以上是关于日期计算----某月第x个星期x(CCF试题)//c++的主要内容,如果未能解决你的问题,请参考以下文章

CCF 201503-3 节日

CCF系列之日期计算(201509-2)

SQL语句计算两个日期之间有多少个工作日的方法

LQ0042 星期一日期计算

算法题CCF CSP第二题练习(更新中)

计算两个日期之间的第一个星期一有多少个