指定日期计算出N天后的日期问题
问题描述:先输入起始日期,再输入任意天数n,求n天后的日期。
源代码一(参考http://zhidao.baidu.com/linkurl=0BxF0QvTywzuRkLUFj6ulUQKYqp97CjUOZBV1UUmXoCkS9HNyOT2axHkcOsRLi-xlB_JE6KvdglSD23S35EUXK)
#include<stdio.h><span style="font-family:SimHei;font-size:14px;"><strong>int main() { int year,month,day; int leapyear=0; int daytime=0; int sum; static int month_date[12]={31,28,31,30,31,30,31,31,30,31,30,31}; printf("请输入日期:"); scanf("%d-%d-%d",&year,&month,&day); printf("请输入天数:"); scanf("%d",&daytime); sum=daytime+day; do { if(month==2) { month_date[month-1]+=leapyear; } if(sum>month_date[month-1]) { sum-=month_date[month-1]; month++; if(month==13) { year++; if(year%400==0||(year%100!=0&&year%4==0)) { leapyear=1; } else { leapyear=0; } month=1; } } } while(sum>month_date[month-1]); day=sum; printf("\n第%d天后是%d-%d-%d",daytime,year,month,day); return 0; }</strong></span><span style="font-family: arial, 'courier new', courier, 宋体, monospace; font-size: 14px;"> </span><span style="font-family:SimHei;font-size:14px;"><strong> </strong></span>源代码二(自己写的)
#include<stdio.h> int year,month,day,days,years; int a[13]={0,31,29,31,30,31,30,31,31,30,31,30,31}; int ru(int year) { if(year%400==0||year%4==0&&year%100!=0) return 1; else return 0; } void rest(int days) { int i; for(i=1;i<=12;i++) { if(days-a[i]>0) days=days-a[i]; else { month=i; day=days; break; } } if(i-1==12) { year=year+1; if(!ru(year)) days++; rest(days); } year+=years; } int main() { int i; while(scanf("%d%d%d%d",&year,&month,&day,&days)==4) { days=days-(a[month]-day); if(!ru(year)&&month<=2) days=days+1; for(i=month+1;i<=12;i++) { if(days>a[i]) days=days-a[i]; else break; } if(i-1==12) { printf("%d\n",days); year++; years=0; while(days>=366) { days=days-366; years++; } for(i=1;i<=years;i++) { if(!ru(year+i)) days++; } rest(days); } else { month=i; day=days; } printf("%d-%d-%d\n",year,month,day); } return 0; }
时间: 2024-10-23 12:16:31