链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
给定公元2000年到公元3000年之间的某一天,请你给出该天的前天是哪一天.
输入描述:
输入在一个日期,格式如"yyyy-mm-dd",题目保证所有输入日期为合法日期。
输出描述:
在一行中输出日期,格式如"yyyy-mm-dd"。
示例1
输入
2020-11-15
输出
2020-11-13
备注:
注意日期格式,月份或者天数不足2位要补零。
//感觉并不难,代码其实也不长,就是觉得有点麻烦,看完博主的解释后,觉得好很多。另外本人稍微排版了代码,便于理解。
总的就是,当号数大于2的时候,直接减2就可以得到前一天;如果不满足,首先我们月份要减1,如果月份是1月的话,年份还要再减1,并且月份是12,继续,月份是二月的话,就需要判断是否是闰年,判断完2月再继续判断一月只有30天的情况就行
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,b,c;
scanf("%d-%d-%d",&a,&b,&c);
if(c>2) c=c-2;
else{
b=b-1;
if(b==0){
a=a-1;
b=12;
}
if(b==2){
if((a%400==0)||(a%100!=0&&a%4==0))
c=27+c;
else c=26+c;
}
else {
if(b==4||b==6||b==9||b==11)
c=28+c;
else c=29+c;
}
}
printf("%04d-%02d-%02d",a,b,c);
return 0;
}