用C++设计一个函数两个形参,一个表示年份一个表示月份,函数返回这个月天数
时间: 2024-10-11 20:02:58 浏览: 34
C++实现两个有序数组的合并
5星 · 资源好评率100%
在C++中,设计一个函数来计算给定年份和月份的天数可以利用库函数`std::chrono::days_in_month()`。但是,由于不是所有年份都是闰年,并且每个月的天数不同(例如2月有28天或29天),我们需要考虑闰年的规则。下面是一个简单的示例:
```cpp
#include <iostream>
#include <ctime>
int getDaysInMonth(int year, int month) {
if (month <= 0 || month > 12) {
std::cerr << "Invalid month value. Month should be between 1 and 12." << std::endl;
return -1; // 返回错误值
}
struct tm date_info = {0};
date_info.tm_year = year - 1900; // 使用公元纪元
date_info.tm_mon = month - 1; // C风格的月份从0开始
date_info.tm_mday = 1;
// 使用mktime将tm结构体转换为时间戳,然后检查结果
time_t timestamp = mktime(&date_info);
if (timestamp == -1) {
std::cerr << "Error calculating days in month." << std::endl;
return -1;
}
// 从时间戳获取月份的总天数并减去第一天,得到实际天数
return std::chrono::duration_cast<std::chrono::days>(timestamp).count() - 1;
}
int main() {
int year = 2023;
int month = 2; // February
int days_in_month = getDaysInMonth(year, month);
if (days_in_month != -1) {
std::cout << "There are " << days_in_month << " days in " << year << " February." << std::endl;
}
return 0;
}
```
阅读全文