输入某一年的第几天,计算并输出它是这一年的几月几日。在主函数输入和输出,编写函数void MonthDay(int year,int yearDay,int *pMonth,int *pDay)计算几月几日。 【输入形式】年和总天数 【输出形式】以-隔开的年、月、日 【样例输入】2000 61 【样例输出】2000-3-1用c语言编写
时间: 2023-06-18 15:08:38 浏览: 304
以下是实现该功能的代码:
```c
#include <stdio.h>
void MonthDay(int year, int yearDay, int *pMonth, int *pDay);
int main() {
int year, yearDay, month, day;
scanf("%d %d", &year, &yearDay);
MonthDay(year, yearDay, &month, &day);
printf("%d-%d-%d", year, month, day);
return 0;
}
void MonthDay(int year, int yearDay, int *pMonth, int *pDay) {
int leapYear, i;
int monthDays[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) { // 判断是否为闰年
leapYear = 1;
monthDays[2] = 29;
} else {
leapYear = 0;
}
for (i = 1; i <= 12; i++) {
if (yearDay <= monthDays[i]) {
*pMonth = i;
*pDay = yearDay;
break;
} else {
yearDay -= monthDays[i];
if (i == 2 && leapYear) {
yearDay--;
}
}
}
}
```
首先在主函数中输入年和总天数,然后调用函数 MonthDay 计算出对应的月份和日期,最后在主函数中输出。
函数 MonthDay 中首先判断该年是否为闰年,然后根据每个月的天数进行遍历,直到找到对应的月份和日期为止。需要注意的是,如果是闰年的二月份,需要将天数减一。
输出时需要以 - 隔开年、月、日。
阅读全文