- 論壇徽章:
- 0
|
- /*month_day:將某年中第幾天(yearday)的日期,轉(zhuǎn)化為某月某日的形式*/
- static char daytab[2][13] = /*用二維數(shù)組定義月份*/
- {
- {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; /*計(jì)算是否是閏年,閏年是1,非潤(rùn)是0*/
- p = daytab[leap]; /*p指向daytab[leap]的首地址 (daytab[leap]有13個(gè)元素) */
-
- while( yearday > *++p) /*天數(shù)yearday大于++p的值(下月天數(shù)),則減下月天數(shù)*/
- {
- yearday -= *p ;
- }
- *pmonth = p -*(daytab +leap); /*???*/
- *pday = yearday;
- }
復(fù)制代碼 我卡殼的地方是: *pmonth = p -*(daytab +leap);
daytab是daytab[leap]首地址,daytab +leap 是daytab[leap]地址,所以,*(daytab +leap)是daytab[leap]的元素的值了。p是daytab[leap]中某個(gè)元素地址,p怎么能和*(daytab +leap)相減呢??
計(jì)算yearday對(duì)應(yīng)的月份,要用 *pmonth = p -(daytab +leap); 才對(duì)呀?
是我哪個(gè)地方理解不對(duì),還是答案錯(cuò)了。求大俠幫忙解答下,謝謝。 |
|