问题描述 :
银行存款有3个月、6个月定期等。从键盘输入一个日期(即为存款日期)以及定期的时间长度(单位为月,输入的时间长度可为小于等于60的任意正整数),请编程输出该定期存款的到期日期。 下面以3个月定期为例,说明定期的概念。
比如:
输入2014年4月30日,则到期日是2014年7月30日;
输入2014年3月31日,则到期日是2014年6月30日(6月没有31日,所以30日就到期);
输入2014年11月30日,则到期日是2015年2月28日;
输入2015年11月30日,则到期日是2016年2月29日。
输入说明 :
共输入4个整数,中间以空格分隔,第一个整数表示年,第二个整数表示月,第三个整数表示日,第四个整数表示定期长度(单位为月)。
输出说明 :
输出到期日期,共输出三个整数,中间以一个空格分隔,行首与行尾均无空格。
#include<iostream>
using namespace std;
int main(){
int n,y,r,m,n1,y1;
cin>>n>>y>>r>>m;
y1=m+y;
if(y1>12){
n1=y1/12;
n=n+n1;
y=y1%12;
}else {y=y1;}
while(r>=29 && y==2){
if(n%100==0&&n%400!=0)
r=28;
else if(n%100!=0&&n%4!=0)
r=28;
else if(n%4==0)
r=29;
break;
}
while(y!=2 && r==31){
if(y%2==0&&y<=7&&y>1)
r=30;
else if(y%2!=0&&y>=8)
r=30;
break;
}
cout<<n<<' '<<y<<' '<<r;
}