利用指针编制程序。输入年和天数,输出对应的年、月、日。例如:输入2020和61,输出2000-3-1。要求:定义函数month_day(year, yearday, *pmonth, *pday)。
运行截图及代码如下:
代码:
#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;
}