题目描述
小爱前去看医生,第一次看完医生后,医生告诉她过 14天后再来第二次看医生。给定第一次看医生的日期(以年-月-日表示),请输出第二次看医生的日期。
输入
单独一行:第一次看医生的日期,以 y-m-d 的形式表示,其中 y表示年份、m表示月份、d表示天数。
输出
单独一行:表示第二次看医生的日期,同样以 y-m-d 的形式表示。
数据范围
- 2000≤y≤3000
- 1≤m≤12
- 1≤d≤31,保证输入数据是一个合法有效的日期
样例输入
2021-3-12
样例输出
2021-3-26
分析
这里要考虑的地方很多
一.日
1.d=d+14
二.月
1.如是大月且日大于31,d=d-31,m++
2.如是小月(除2月)且日大于31,d=d-30,m++
3.如是2月且是闰年且日大于29,d=d-29,m++
4.如是2月且不是闰年且日大于28,d=d-28,m++
三.年
1.如是12月且日大于31,y++
代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(){
long long y,m,d;
char a;
cin>>y>>a>>m>>a>>d;
d=d+14;
if(m==1||m==3||m==5||m==7||m==8||m==10||m==12){
if(d>31){
d=d-31;
m++;
if(m>12){
m=m-12;
y++;
}
}
}else if(m==2){
if(y%4==0&&y%100!=0 || y%400==0){
if(d>29){
d=d-29;
m++;
}
}else{
if(d>28){
d=d-28;
m++;
}
}
}else{
if(d>30){
d=d-30;
m++;
}
}
cout<<y<<"-"<<m<<"-"<<d;
return 0;
}
呼,终于编完了!!!!!!!!!!!!!!!!!!!!