C语言 日期转换思路
int nextDay(){ int mDay[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; int year,n; while(scanf("%d%d",&year,&n) != EOF){ int mon = 1; int day = 1; for(int i = 0;i<n-1;i++){ bool isLeap = year%400==0 || year%100!=0 && year%4==0; if(isLeap){ mDay[2] = 29; }else{ mDay[2] = 28; } day++; if(day>mDay[mon]){ mon++; day = 1; if(mon>12){ year++; mon = 1; } } } printf("%04d-%02d-%02d\n",year,mon,day); } }
输入是 一个年份和该年份第n天
输出是该天是YYYY-MM-DD格式的日期
在代码中将看作是该年份的第1天就是1月1日
然后一共是第n天 每过一天 就加一天
循环n-1次
其中采用空间换时间的思想将每个月天数存储在一个数组
当天数加到超过本月份的天数时 就让天数归为1日 月份加一
同理年份也是如此
最终得到YYYY-MM-DD格式的日期