javaee论坛

普通会员

225648

帖子

335

回复

349

积分

楼主
发表于 2019-11-03 12:53:16 | 查看: 842 | 回复: 2

直接上代码给定初始日期2000年1月1日是星期六

#include<iostream>#include<map>usingnamespacestd;//2000年的1月1日是星期六//打印给定年所有的星期三map<int,int>Construct(intyear){map<int,int>m;inta[]={1,3,5,7,8,10,12};intb[]={4,6,9,11};for(inti=0;i<7;++i)m.insert(pair<int,int>(a[i],31));for(inti=0;i<4;++i)m.insert(pair<int,int>(b[i],30));if(year%4==0)m.insert(pair<int,int>(2,29));elsem.insert(pair<int,int>(2,28));returnm;}//求出给定年的1月1日是星期几intCalWeekDay(intyear){intweekday,DistanceDay=0;//2000年的1月1日是星期六for(inti=2000;i<year;++i){if(i%4==0)DistanceDay+=366;elseDistanceDay+=365;}intleft=DistanceDay%7;inttemp=left+6;if(temp<=7)weekday=temp;elseweekday=temp-7;returnweekday;}intFirstDate(intInitWeekDay,intday){intFirstResult=0;if(InitWeekDay>day)FirstResult=7-(InitWeekDay-day)+1;elseif(InitWeekDay<day)FirstResult=day-InitWeekDay+1;elseFirstResult=1;returnFirstResult;}intmain(){intyear,day;while(cin>>year>>day){map<int,int>m;intFirstResult=0;m=Construct(year);//求出给定年的1月1日是星期几intInitWeekDay=CalWeekDay(year);FirstResult=FirstDate(InitWeekDay,day);//打印出给定该年中所有的星期三cout<<year<<"年所有星期"<<day<<"的有:"<<endl;for(autop=m.begin();p!=m.end();++p){cout<<p->first<<"月";for(inti=FirstResult;i<=p->second;i=i+7)cout<<i<<"";//求出下个月第一个满足的日期是当月第几天intDis=p->second-FirstResult;intInitDay=0;intSumDay=Dis%7+day+1;if(SumDay<=7)InitDay=SumDay;elseInitDay=SumDay-7;FirstResult=FirstDate(InitDay,day);cout<<endl;}}return0;}

普通会员

0

帖子

296

回复

323

积分
沙发
发表于 2019-11-03 21:51:55

围观

普通会员

0

帖子

324

回复

331

积分
板凳
发表于 2023-11-23 13:18:54

我喜欢

您需要登录后才可以回帖 登录 | 立即注册

触屏版| 电脑版

技术支持 历史网 V2.0 © 2016-2017