《c程序设计语言》读书笔记-5.9-指针转换天数和日期

#include "stdio.h"
#include "stdlib.h"
#include "string.h"

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 day_of_year(int year,int month,int day)
{
    int leap;
    char *p;

    leap = ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0);
    p = daytab[leap];
    while(--month)
        day += *++p;

    return day;
}

void month_day(int year,int yearday,int *pmonth,int *pday)
{
    int leap;
    char *p;

    leap = ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0);
    p = daytab[leap];
    while(yearday > *++p)
        yearday -= *p;
    *pmonth = p - *(daytab + leap);
    *pday = yearday;
}
int main()
{
    int n;
    int month = 0,day = 0;
    int *pmonth = &month,*pday = &day;

    n = day_of_year(2014,11,14);
    printf("%d\n",n);

    month_day(2014,318,pmonth,pday);
    printf("%d %d",*pmonth,*pday);

    return 0;
}


*(daytab + leap) 表示的是地址。基础不牢啊,还想了半天。

 

posted @ 2014-11-14 22:13  司空格子Ored  阅读(342)  评论(0编辑  收藏  举报