http://oj.ecustacm.cn/problem.php?id=1251
注意判断是不是闰年
#include<cstdio>
#include<iostream>
using namespace std;
int m[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
bool judge(int year)
{
if(year%400==0||year%4==0&&year%100!=0)
return true;
return false;
}
int main(void)
{
int year,day,month,n;
while(cin>>year>>month>>day>>n)
{
while(n)
{
if(judge(year))//闰年二月为29天
{
m[2]=29;
}
if(day<m[month])
{
day++;
}
else
{
day=1;
month++;
}
if(month==13)
{
month=1;
year++;
}
m[2]=28;//恢复现场
n--;
}
printf("%d-%02d-%02d\n",year,month,day);
}
return 0;
}
简洁写法:
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int year,month,day,ans;
int m[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
bool judge(int year)
{
if(year%400==0|| (year%4==0&&year%100!=0) ) return true;
else return false;
}
int main(void)
{
while(cin>>year>>month>>day>>ans)
{
while(ans--)
{
if(judge(year)) m[2]=29;
day++;
if(day>m[month]) day=1,month++;
if(month==13) month=1,year++;
m[2]=28;
}
printf("%d-%02d-%02d\n",year,month,day);
}
return 0;
}