2015年蓝桥杯A组填空题 1.星系炸弹 知识点:日期模拟 一次过

59 阅读1分钟

1.星系炸弹 - 蓝桥云课 (lanqiao.cn)

和这道题一模一样,都是日期类板子题:3218. 日期计算 非常简单的日期模拟题 一遍过 - 掘金 (juejin.cn)

手动模拟一下翻日历即可:

#include<bits/stdc++.h>
using namespace std;

bool is_leap(int y)
{
    if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)return true;
    return false;
}
int main()
{
    int y= 2014, m = 11, d= 9;
    int cnt = 0, day = 1000;

    while (cnt != day)
    {
        d++;
        if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12)
        {
            if (d == 32)
            {
                m++;
                d = 1;

                if (m == 13)
                {
                    y++;
                    m = 1;
                }
            }

        }
        else if (m == 4 || m == 6 || m == 9 || m == 11)
        {
            if (d== 31)
            {
                m++;
                d= 1;
                if (m == 13)
                {
                    y++;
                    m = 1;
                }
            }
        }

        else if (m == 2 && is_leap(y))
        {
            if (d == 30)
            {
                m++;
                d = 1;

                if (m == 13)
                {
                    y++;
                    m = 1;
                }
            }
        }
        else if (m == 2 && !is_leap(y))
        {
            if (d == 29)
            {
                m++;
                d = 1;

                if(m == 13)
                {
                    y++;
                    m = 1;
                }
            }
        }

        cnt++;
    }


    cout << y << " "<<m <<" "<< d << endl;
    return 0;
}

image.png

第二个板子

#include<bits/stdc++.h>
using namespace std;

int months[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };

int main()
{
	int y = 2014, m = 11, d = 9, day;

	for (day=0; day <1000; day++)
	{
		if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0)) months[2] = 29;
		else  months[2] = 28;

		d++;
		if (d > months[m])
		{	
			d = 1;
			m++;
		}
		if (m > 12)
		{
			m = 1;
			y++;
		}
	}

	printf("%04d-%02d-%02d", y, m, d);

	return 0;
}