c++给出年月日,计算出该日是该年的第几天,要求用函数来做。
时间: 2024-11-13 22:42:23 浏览: 24
在C++中,可以编写一个函数来计算给定日期是一年中的第几天。这通常涉及到闰年的处理,因为二月份的天数不同。这里是一个简单的示例函数:
```cpp
#include <iostream>
using namespace std;
int daysInMonth(int month, bool isLeapYear) {
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return 31;
case 4:
case 6:
case 9:
case 11:
return 30;
case 2:
if (isLeapYear)
return 29;
else
return 28;
default:
// 不允许的月份
throw invalid_argument("Invalid month number");
}
}
int dayOfYear(int year, int month, int day) {
int sum = 0;
for (int i = 1; i < month; ++i) {
sum += daysInMonth(i, isLeapYear(year));
}
sum += day;
return sum;
}
bool isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
int main() {
int year, month, day;
cout << "Enter a date (YYYY MM DD): ";
cin >> year >> month >> day;
try {
bool leap = isLeapYear(year);
int dayOfTheYear = dayOfYear(year, month, day);
cout << "The given date (" << year << "/" << month << "/" << day << ") is the " << dayOfTheYear << "th day of the year." << endl;
} catch (invalid_argument& e) {
cerr << "Error: " << e.what() << endl;
}
return 0;
}
```
在这个程序中,`daysInMonth`函数负责获取给定月份的天数,`dayOfYear`函数累加每个月的天数直到指定日期,`isLeapYear`函数判断是否是闰年。主函数中用户输入日期,然后计算并显示该日在当年的位置。
阅读全文