《算法笔记》3.4小节——入门模拟->日期处理 问题 E: 日期累加
问题 E: 日期累加
题目描述
设计一个程序能计算一个日期加上若干天后是什么日期。
输入
输入第一行表示样例个数m,接下来m行每行四个整数分别表示年月日和累加的天数。
输出
输出m行,每行按yyyy-mm-dd的个数输出。
样例输入
1 2008 2 3 100
样例输出
2008-05-13
实现代码:
#include<cstdio>
int isLeap(int a)
{
return (a%4==0&&a%100!=0)||(a%400==0);
}
int month[13][2]={{0,0},{31,31},{28,29},{31,31},{30,30},{31,31},{30,30},{31,31},{31,31},{30,30},{31,31},{30,30},{31,31}};
int main()
{
int m;
scanf("%d",&m);
int yy,mm,dd,temp;
while(m--)
{
scanf("%d %d %d %d",&yy,&mm,&dd,&temp);
while(temp--)
{
dd++;
if(dd==month[mm][isLeap(yy)]+1)
{
dd=1;
mm++;
}
if(mm==13) {
yy++;
mm=1;
}
}
printf("%d-%02d-%02d\n",yy,mm,dd);
}
return 0;
}
结果如下: