题解 | #日期类#
日期类
https://www.nowcoder.com/practice/130aa2d7d1f5436b920229dca253893b
#include "iostream" #include "iomanip" using namespace std; class date250 { // 日期类 private: int day; int year; int month; public: date250(); // 构造函数:默认构造函数 date250(int iDay, int iMonth, int iYear); // 构造函数:带初值 bool isLeap(); // 功能函数:判断是否为闰年 void dayPlus(); // 功能函数:日期自增一天 void printDate(); // 功能函数:规格化打印输出 }; date250::date250() { // 构造函数:默认构造函数 day = 1; year = 2001; month = 1; } date250::date250(int iYear, int iMonth, int iDay) { // 构造函数:带初值 day = iDay; month = iMonth; year = iYear; } void date250::printDate() { // 功能函数:规格化打印输出 cout << year << "-" << setw(2) << setfill('0') << month << "-" << setw(2) << setfill('0') << day << endl; } void date250::dayPlus() { // 功能函数:日期自增一天 int dayTab[2][13] = { {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31} }; if (++day > dayTab[isLeap()][month]) { day = 1; if (++month > 12) { month = 1; year++; } } } bool date250::isLeap() { // 功能函数:判断是否为闰年 if (year % 400 == 0 || year % 100 != 0 && year % 4 == 0) return true; return false; } int main() { int n, iDay, iMonth, iYear; cin >> n; // 输入 for (int i = 0; i < n; i++) { cin >> iYear >> iMonth >> iDay; // 输入 date250 date(iYear, iMonth, iDay); // 构造函数 date.dayPlus(); // 功能函数:日期自增一天 date.printDate(); // 功能函数:规格化打印输出 } return 0; }