- 论坛徽章:
- 0
|
- /*month_day:将某年中第几天(yearday)的日期,转化为某月某日的形式*/
- 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 month_day(int year ,int yearday ,int *pmonth ,int *pday)
- {
- int leap,*p;
- leap = year % 4 ==0 && year % 100 == 0 || year % 400 == 0; /*计算是否是闰年,闰年是1,非润是0*/
- p = daytab[leap]; /*p指向daytab[leap]的首地址 (daytab[leap]有13个元素) */
-
- while( yearday > *++p) /*天数yearday大于++p的值(下月天数),则减下月天数*/
- {
- yearday -= *p ;
- }
- *pmonth = p -*(daytab +leap); /*???*/
- *pday = yearday;
- }
复制代码 我卡壳的地方是: *pmonth = p -*(daytab +leap);
daytab是daytab[leap]首地址,daytab +leap 是daytab[leap]地址,所以,*(daytab +leap)是daytab[leap]的元素的值了。p是daytab[leap]中某个元素地址,p怎么能和*(daytab +leap)相减呢??
计算yearday对应的月份,要用 *pmonth = p -(daytab +leap); 才对呀?
是我哪个地方理解不对,还是答案错了。求大侠帮忙解答下,谢谢。 |
|