题解 | #日期类#
日期类
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;
}
查看24道真题和解析