按如下函数原型用函数编程解决如下的日期转换问题(要求考虑闰年的问题):
输入某一年的第几天,计算并输出它是这一年的第几月第几日。
/* 函数功能: 对给定的某一年的第几天,计算它是这一年的第几月第几日
函数入口参数:整型变量year,存储年
整型变量yearDay,存储这一年的第几天
函数出口参数:整型指针pMonth,指向存储这一年第几月的整型变量
整型指针pDay,指向存储第几日的整型变量
函数返回值: 无 */
void MonthDay(int year, int yearDay, int *pMonth, int *pDay);
输入提示信息:"Please enter year, yearDay:"
输入格式:"%d,%d"
输出提示信息和格式:"month = %d, day = %d\n"
程序运行示例:
Please enter year, yearDay:2020,52
month = 2, day = 21
#include<stdio.h>
void MonthDay(int year, int yearDay, int* pMonth, int* pDay);
int main()
{
int year, yearday;
int month, day;
printf("Please enter year, yearDay:");
scanf_s("%d,%d", &year, &yearday);
MonthDay(year, yearday, &month, &day);
printf("month = %d, day = %d\n", month, day);
return 0;
}
void MonthDay(int year, int yearDay, int* pMonth, int* pDay)
{
int s[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };//用数组s来存储12个月份的天数
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)//闰年时二月多一天
s[1] += 1;
int i;
for (i = 0; i < 12; i++)
{
yearDay -= s[i];
if (yearDay <= 0)
{
*pMonth = i + 1;
*pDay = yearDay + s[i];
break;
}
}
}