问题陈述:
我们经常要计算,从今天往后N天之后是哪一天(哪年哪月哪日)。现在我们就可以编写一个程序,推算指定日期之后的第N天是什么日期。
输入:
年 月 日
N
输出:
(年月日+N天后的)年.月.日
问题分析:
1,如果年月日全部换做日来计算,那么就会变成简单的加减算术题;
但是现实问题需要根据,年月日换算关系进行单位转换;
同时随着年月的不同,换算关系还随之改变,让问题1变得复杂
2,首先,总思路是先按日来计算,再逐层进行单位转换;
用数组来解决不同日月之间的换算
用if语句来实现2月闰年平年的转换,和月年之间的转换
代码解答:
int main ()
{
int year,month,day,N;
scanf("%d %d %d %d",&year,&month,&day);
int monthdays[]={31,28,31,30,31,30,31,31,30,31,30,31};
if(year%4==0&&(year%100!=0||year%400==0))
{
monthdays[1]=29;
}
days+=N;
while(days>monthdays[month-1])
{
days-=monthdays[month-1];
if(month>12)
{
month=1;
year++;
if(year%4==0&&(year%100!=0||year%400==0))
{
monthdays[1]=29;
}else{
monthdays[1]=28;
}
}
}
printf("%d %d %d",year,month,day);
return 0;
}