题目:前天是哪天

前天是哪天 (nowcoder.com)

给定公元2000年到公元3000年之间的某一天,请你给出该天的前天是哪一天.

计算前一天就看天数是否符合要求,如果天数不符合要求,向前看月数是否可以符合要求,如果月数也不符合要求向前看年数是否符合要求

#include<bits/stdc++.h>
using namespace std;
int y, n, d;
int m[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
bool is_ren(int x)
{
	if(y % 100 != 0 && y % 4 == 0 || y % 400 == 0)return true;
	return false;
}
int main()
{
	char a = '-';
	cin >> y >> a >> n >> a >> d;
	if(is_ren(y))m[2] = 29;
	if(d - 2 > 0)
	{
		d = d - 2;
	}
	else if(n - 1 > 0)//判断此处是否需要跨年 
	{
		n = n - 1;
		d = d + m[n] - 2;
	}
	else//此处需要跨年 
	{
		y = y - 1;
		if(!is_ren(y))m[2] = 28;
		n = 12;
		d = d + m[n] - 2;
	}
	printf("%.2d-%.2d-%.2d", y, n, d);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/m0_75087931/article/details/132973897
今日推荐