2013年蓝桥杯A组省赛填空题 1.高斯日记 知识点:日期模拟,枚举

348 阅读1分钟

1.高斯日记 - 蓝桥云课 (lanqiao.cn)

模拟翻日历的方式,然后对闰年2月份和平年2月份进行特判

#include <iostream>
using namespace std;

bool is_leap(int year)
{
  //四年一润,百年不润,四百年再润
	if(year%4==0&&year%100!=0||year%400==0)
	{
		return true;
	}
return false;
 } 
int main()
{
  int year=1777,month=4,day=30;
  
  //我们用i来枚举,i从0到8112也就是8113天
  for(int i=0;i<8112;i++)
  {
        //开始翻日历
        day++;
 
        //过去了一年
        if(day==32&&month==12) // 12月32 即下一年的1月1
       {
         year++;
         month=1;
         day=1;
         continue;  //找到一种情况,结束循环,去找下一种情况
       } 


       //一个月31天的情况
		 if((month==1||month==3||month==5||month==7||month==8||month==10)&&day==32)
		 {
		 	month++;
		 	day=1;
		 	continue;
		 }


       //一个月30天的情况
       if((month==4||month==6||month==9|month==11)&&day==31)
       {
         month++;
         day=1;
         continue;
       }


		 //对2月份进行特判

     //闰年2月份
		 if(month==2&&is_leap(year)&&day==30) 
		 {
		 		month++;
		 		day=1;
			 continue;
		 }

     //平年2月份
		 if(month==2&&!is_leap(year)&&day==29)
		 {
		 		month++;
		 		day=1;
			 continue;
		 }


  }

  printf("%04d-%02d-%02d\n",year,month,day);
  return 0;
}

image.png