ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

面向对象程序设计-类与对象2-日复一日 - 《C++编程基础及应用》- 习题13-2

面向对象程序设计-类与对象2-日复一日 - 《C++编程基础及应用》- 习题13-2 作者 海洋饼干叔叔单位 重庆大学设计符合下述要求的日期类Date使得下述代码可以正常运行。拥有数据成员year、month和day分别存储年、月、日构造函数接受年、月、日参数并初始化全部数据成员公有成员函数toText()返回一个string对象该字符串为该日期对象的文字表达比如“2022-5-20”公有成员函数nextDay()返回一个Date对象表示该日期的后一天公有成员函数prevDay()返回一个Date对象表示该日期的前一天。裁判测试程序样例#include iostream #include string #include assert.h using namespace std; //请在此处定义Date类 int main() { int year2000,month1,day1; cin year month day; Date d(year,month,day); cout Date: d.toText() , Next Day: d.nextDay().toText() , Prev Day: d.prevDay().toText(); return 0; }输入样例2000 3 1输出样例Date: 2000-3-1, Next Day: 2000-3-2, Prev Day: 2000-2-29提示需要注意闰年闰年2月有29天平年28天。闰年判定函数bool isLeapYear(int year){ //四年一闰百年不闰四百年又闰 if (year%4000) return true; else if (year%1000) return false; else if (year%40) return true; else return false; }请注意函数题只需要提交相关代码片段不要提交完整程序。参考示例bool isLeapYear(int year){ if(year%4000) return true; else if(year%1000) return false; else if(year%40) return true; return false; } class Date{ private: int year,month,day; public: Date(int y,int m,int d):year(y),month(m),day(d){} string toText(){ return to_string(year)-to_string(month)-to_string(day); } Date nextDay(){ int mon[12]{31,28,31,30,31,30,31,31,30,31,30,31}; int yyear,mmonth,dday1; int maxDay mon[m-1]; if(m2 isLeapYear(y)) maxDay29; if(dmaxDay){ d1;m; } if(m12){ m1;y; } return Date(y,m,d); } Date prevDay(){ int mon[12]{31,28,31,30,31,30,31,31,30,31,30,31}; int yyear,mmonth,dday-1; if(d1){ m--; if(m1){ m12;y--; } int maxDaymon[m-1]; if(m2 isLeapYear(y)) maxDay29; d maxDay; } return Date(y,m,d); } };
返回列表