暑期打卡第三天(题目:前天是哪天)

题目描述

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

暑期打卡第三天(题目:前天是哪天)_第1张图片

输入描述:

输入在一个日期,格式如"yyyy-mm-dd",题目保证所有输入日期为合法日期。

输出描述:

在一行中输出日期,格式如"yyyy-mm-dd"。

示例1

输入

2020-11-15

输出

2020-11-13

备注:

注意日期格式,月份或者天数不足2位要补零。

参考代码:

#include
using namespace std;
int main()
{
    int y,n,d;
    char a;
    cin>>y>>a>>n>>a>>d;
    int m[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    if((y%100!=0 && y%4==0) || y%400==0)
        m[1]=29;//闰年二月29天
    if(d-2>0)//减去两天后不需要跨月的情况;
        d=d-2;
    else if(n>1){//减去两天需要跨月,并且减前不是一月;
        n=n-1;
        d=d-2+m[n-1];
    }
    else{//减去两天需要跨月,并且原来是一月所以需要跨年
        y=y-1;
        n=12;
        d=d-2+m[n-1];
    }
    printf("%d-%.2d-%.2d",y,n,d);//setw(2)只能规定占两格,但不会补0;
    return 0;
}

你可能感兴趣的:(c++,蓝桥杯,算法)