利用指针编制程序。输入年和天数,输出对应的年、月、日。例如:输入2020和61,输出2000-3-1。要求:定义函数month_day(year, yearday, *pmonth, *pday)。

利用指针编制程序。输入年和天数,输出对应的年、月、日。例如:输入2020和61,输出2000-3-1。要求:定义函数month_day(year, yearday, *pmonth, *pday)。

运行截图及代码如下:

img

代码:

#include <stdio.h>
void month_day(int year,int yearday, int* pmonth,int* pday)
{
    int a[] = {0,31,28,31,30,31,30,31,31,30,31,30,31},i,sum=0;
    if(year%4==0 && year%100 !=0 || year%400 == 0)
        a[2] = 29;

    for(i=1;i<=12;i++)
    {
        sum += a[i];
        if(sum >= yearday)
            break;
    }
    if(sum == yearday)
    {
        *pmonth = i;
        *pday = a[i];
    }else
    {
        sum -= a[i];
        *pmonth = i;
        *pday = yearday - sum;
    }
}

int main()
{
    int year,day;
    int pmon,pday;
    scanf("%d %d",&year,&day);
    month_day(year,day,&pmon,&pday);
    printf("%d-%d-%d",year,pmon,pday);
    return 0;

}
#include<stdio.h>
int month_day(int year,int yearday,int *pmonth,int *pday);
int main(void)
{
    int day,month,year,yearday;
    printf("Input year and yearday:"); 
    scanf("%d%d",&year,&yearday);
    month_day(year,yearday,&month,&day);
    printf("%d-%d-%d\n",year,month,day);
    return 0;
 } 

int month_day(int year,int yearday,int *pmonth,int *pday)
{
    int k,leap;
    int tab[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},  
    };
    
    leap=(year%4==0&&year%100==0||year%400==0);
    
    for(k=1;yearday>tab[leap][k];k++)
        yearday-=tab[leap][k] ;
    *pmonth=k;
    *pday=yearday-1;
}

img