14. Display 7.4中的私有成员函数DayOfYear::Check_日期允许某些非法日期通过,例如2月30日。重新定义成员函数Day0fYear::Check_日期,以便它在发现任何非法日期时结束程序。允许二月包含29天,因此您可以考虑闰年。用C++
时间: 2024-10-11 09:13:22 浏览: 26
dbx.rar_aix d_dbx in a_linux D_site:www.pudn.com_unix d
在C++中,你可以通过重写`DayOfYear::Check_日期()`函数来改进这个方法,使其更严谨地检查日期的合法性,并在遇到非法日期时终止程序。由于涉及到日期验证和闰年的处理,可以创建一个新的函数来判断是否为闰年,然后更新`Check_日期`的实现。以下是一个简单的例子:
```cpp
#include <iostream>
using namespace std;
class Date {
private:
int day;
int month;
int year;
// 新增一个辅助函数用于判断是否为闰年
bool isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
public:
// 修改后的Check_日期函数
void Check_Date() {
if (month < 1 || month > 12) {
cout << "Invalid month." << endl;
exit(1); // 终止程序
}
if (day < 1) {
cout << "Invalid day." << endl;
exit(1);
}
if (month == 2) {
int days_in_month = isLeapYear(year) ? 29 : 28;
if (day > days_in_month) {
cout << "Invalid date for February." << endl;
exit(1);
}
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
if (day > 30) {
cout << "Invalid day for these months." << endl;
exit(1);
}
} else if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {
if (day > 31) {
cout << "Invalid day." << endl;
exit(1);
}
}
}
// ... 其他函数...
};
int main() {
Date d;
d.day = 30; // 测试非法日期
d.month = 2;
d.year = 2024;
d.Check_Date(); // 这里会检测并终止程序
return 0;
}
```
在这个例子中,我们添加了一个`isLeapYear`函数来判断是否为闰年,然后在`Check_Date`中利用这个信息检查2月份的天数。如果遇到非法日期,程序会立即退出。
阅读全文