给定一个日期date和一个正整数d,求日期date加上d天后的日期。
思路:
利用两个二维数组分别存储闰年和非闰年的每个月的天数,以此来使日期变化。
简单的加法实现——利用for循环,一天一天增加,虽然效率低,但很好实现。
代码如下:
#include <iostream>
using namespace std;
int monthday[2][13] = {
{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
{0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
};
bool isrunnian(int year){
if(year%400==0||(year%4==0&&year%100!=0)){
return true;
}
else{
return false;
}
}
void addDay(int &year,int &month,int &day){
day++;
if(day>monthday[isrunnian(year)][month]){
day = 1;
month++;
}
if(month>12){
month = 1;
year++;
}
}
int main(){
int year,month,day;
scanf("%d-%d-%d",&year,&month,&day);
int increase;
cin>>increase;
for(int i=0;i<increase;i++){
addDay(year,month,day);
}
printf("%04d-%02d-%02d\n",year,month,day);
return 0;
}
同理可以做日期减法,自己尝试修改吧!