实现void MonthandDay(unsigned int year,unsigned int totolday,unsigned int * month,unsigned int * day)函数,完成将年、总天数转换为对应的月、日,月份和日期信息通过指针返回。C语言用指针做
时间: 2024-02-15 20:05:31 浏览: 108
c语言实现的任意日期和天数的转换
3星 · 编辑精心推荐
实现如下:
```c
void MonthandDay(unsigned int year, unsigned int totolday, unsigned int* month, unsigned int* day) {
unsigned int monthDays[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 }; // 每个月的天数
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) { // 判断是否为闰年
monthDays[1] = 29;
}
unsigned int i;
for (i = 0; i < 12; i++) {
if (totolday <= monthDays[i]) { // 如果总天数小于等于当前月份的天数,说明日期在该月
*month = i + 1;
*day = totolday;
break;
}
totolday -= monthDays[i]; // 否则减去当前月份的天数,进入下一个月
}
}
```
函数的基本思路是,先定义一个数组存储每个月的天数,然后根据输入的年份判断是否为闰年,修改二月份的天数。接着用一个循环遍历每个月的天数,判断输入的总天数是否小于等于当前月份的天数,如果是,则说明日期在该月;否则,减去当前月份的天数,进入下一个月,直到找到对应的月份和日期为止。最后用指针返回月份和日期的值。
阅读全文