看医生c++

题目描述

小爱前去看医生,第一次看完医生后,医生告诉她过 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;
}

呼,终于编完了!!!!!!!!!!!!!!!!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值