c++编程实现:输入某一年的第几天,计算并输出它是这一年的几月几日(要求考虑闰年)。 (1)主函数功能:输入某一年的第几天,调用子函数计算该天是这一年的几月几日,输出结果。 (2)子函数功能:计算某一年的第几天是这一年的几月几日, 子函数头要求为void MonthDay(int year, int num, int &month, int &day)。
时间: 2024-03-02 09:53:08 浏览: 62
Java练习题Question4.txt
以下是代码实现:
```c++
#include <iostream>
using namespace std;
void MonthDay(int year, int num, int &month, int &day);
int main() {
int year, num, month, day;
cout << "请输入年份和天数,用空格隔开:" << endl;
cin >> year >> num;
MonthDay(year, num, month, day);
cout << "该天是 " << year << " 年 " << month << " 月 " << day << " 日。" << endl;
return 0;
}
void MonthDay(int year, int num, int &month, int &day) {
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) {
monthDays[2] = 29; // 闰年2月有29天
}
int i;
for (i = 1; i <= 12; i++) {
if (num <= monthDays[i]) {
break;
}
num -= monthDays[i];
}
month = i;
day = num;
}
```
代码逻辑如下:
1. 在主函数中输入年份和天数,调用子函数 `MonthDay` 计算该天是这一年的几月几日;
2. `MonthDay` 函数首先定义一个数组 `monthDays`,表示每个月的天数,其中第一个元素为0表示方便计算;
3. 如果该年是闰年,将数组中第2个元素(即2月份)的值修改为29;
4. 通过循环遍历每个月的天数,如果天数小于等于该月的天数,就退出循环,否则将天数减去该月的天数;
5. 循环结束后,`i` 即为该天所在的月份,`num` 即为该天是该月的第几天,将 `i` 和 `num` 分别赋给 `month` 和 `day` 后返回主函数。
阅读全文