/*本程序用来计算从某个日期起,N天后的具体日期。首先输入一个规定格式的日期
(如2010/9/29),然后再输入一个整数(比如10000),输出的日期(2038/2/14)的含义
就是从2010/9/29向后推天后的日期喔,嘿嘿,仅为个人验证测试所编*/
#include <stdio.h>
int count_day(int year, int month,int day);
int judge_year(int year);
void month_day(int year,int yearday,int *pmonth,int *pday);
static char daytab[2][13]={
{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31}
};
int main()
{
int i,cachedata,cacheday,numday,day,month,year,leap,lastday;
int m,d;
printf("please input the begining day:year/month/day");
scanf("%d/%d/%d",&year,&month,&day);
cachedata=count_day(year,month,day);
leap=judge_year(year);
if (leap==1)
lastday=366-cachedata;
else
lastday=365-cachedata;
printf("please input the number of day:");
scanf("%d",&numday);
if (numday < lastday){
numday += cachedata;
month_day(year,numday,&m,&d);
printf("The data is:%d/%d/%d",year,m,d);
} else if (numday > lastday){
numday -= lastday;
++year;
while (numday >366 || numday > 365){
++year;
if (judge_year( year) && (numday > 366) )
numday -=366;
if (!judge_year(year) && numday>365)
numday -=365;
}
month_day(year,numday,&m,&d);