给定公元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;
}