日期问题
描述
输入某个日期(年月日的格式),从这个日期开始算第一天,输出n天后,日期是什么,其中 0< n< =10000
输入
第一行3个正整数,表示开始的年、月、日
第二行一个正整数n,表示n天后
输出
输出一行三个整数,表示n天后的年月日,每个整数之间用一个空格隔开
样例
输入复制
2015 6 26
31
输出复制
2015 7 27
提交
语言:
C++14
主题:
monokai
1
日期问题
描述
输入某个日期(年月日的格式),从这个日期开始算第一天,输出n天后,日期是什么,其中 0< n< =10000
输入
第一行3个正整数,表示开始的年、月、日
第二行一个正整数n,表示n天后
输出
输出一行三个整数,表示n天后的年月日,每个整数之间用一个空格隔开
样例
输入复制
2015 6 26
31
输出复制
2015 7 27
提交
语言:
C++14
主题:
monokai
1
#include <iostream>
using namespace std;
// 定义函数findLeapYear(),计算年份year是否是闰年,如果是返回1,如果不是返回0
int findLeapYear(int year){
// https://blog.csdn.net/lxsxjsj/article/details/143351233
if((year%4==0&&year%100!=0)||(year%400==0)){
return 1;
}
return 0;
}
int main(void){
int year,month,day,n,i=0;
int oyDays[12]={31,28,31,30,31,30,31,31,30,31,30,31}; // 闰年12个月的天数
int lyDays[12]={31,29,31,30,31,30,31,31,30,31,30,31}; // 平年12个月的天数
cin>>year>>month>>day; // 从输入获取年,月,日
cin>>n; // 从输入获取天数n
// 循环n次,计算输入的日期,n天后的日期
while(i<n){
// cout<<"i="<<i<<", " ;
if(findLeapYear(year)==1){ // 如果是闰年
if(day>=lyDays[month-1]){ // 如果月份变化
//cout<<"lyDays["<<(month-1)<<"]="<<lyDays[month-1]<<", ";
month++;
if(month>12){ // 如果年份变化
month=1;
year++;
}
day=1;
// cout<<"闰年,年:"<<year<<", 月:"<<month<<" ,日:"<<day<<endl;
}else{ // 日数变化
day++;
// cout<<"闰年,过了一天, 年:"<<year<<", 月:"<<month<<" ,日:"<<day<<endl;
}
}else if(findLeapYear(year)==0){ // 如果是平年
if(day>=oyDays[month-1]){ // 如果月份变化
// cout<<"oyDays["<<(month-1)<<"]="<<oyDays[month-1]<<", ";
month++;
if(month>12){ // 如果年份变化
month=1;
year++;
}
day=1;
//cout<<"平年,年:"<<year<<", 月:"<<month<<" ,日:"<<day<<endl;
}else{ // 日数变化
day++;
//cout<<"平年,过了一天, 年:"<<year<<", 月:"<<month<<" ,日:"<<day<<endl;
}
}
i++; // 天数+1
}
cout<<year<<" "<<month<<" "<<day; // 打印n天后的日期
return 0;
}
