问题描述 :
写一个函数,传入年月日,计算它的第二天,并返回该日期。由用户输入年月日和一个n值,使用前述函数,计算该日期加n天的日期为多少。
输入说明 :
输入year,month,day和n共4个正整数,以空格分隔。n的值不超过2000。
输出说明 :
输出计算得到的结果年月日共3个正整数,整数之间以一个空格分隔,行首与行尾无多余空格。
输入范例 :
2000 1 1 366
输出范例 :
2001 1 1
算法思想
我这里想到之前做的一道类似的题,就是先给定一个全局变量数组,相应月份做下标,存放当月最多有几天。然后判断是否是闰年,闰年的情况吧2月的天数改成29,否则改成28。
然后从1开始一天天累加,加一天进行一次判断,首先判断当天是否为该月的最后一天,如果不是最后一天,直接day+1。否则判断,该月是否为12月,如果不是,那么下一天就是month+1,day=1.如果是12月,那么下一天就是year+1,month=1,day=1.`
#include<stdio.h>
int isrun(int y)
{
if(y%400==0||(y%4==0&&y%100!=0))
return 1;
else
return 0;
}
int maxday[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int main()
{
int y,m,d;
int n;
int i=1;
scanf("%d%d%d%d",&y,&m,&d,&n);
while(i<=n)
{
if(isrun(y))
maxday[2]=29;
else
maxday[2]=28;
if(d+1<=maxday[m])
d++;
else if(m+1<=12)
{
m++;
d=1;
}
else
{
y++;
m=1;
d=1;
}
i++;
}
printf("%d %d %d\n",y,m,d);
return 0;
}