永发信息网

C++设计Date类,不同格式输出日期

答案:2  悬赏:70  手机版
解决时间 2021-02-23 20:47
  • 提问者网友:动次大次蹦擦擦
  • 2021-02-23 16:50
设计Date类,该类采用三个整数存储日期:month、day和year。其函数成员具有如下方式输出日期的功能: 12-25-11 December 25, 2011 25 December 2011用C++写一个完整的程序,检验此类。 注意:对于日期day成员,不能接受大于31小于1的值;对于月month,不能接受大于12小于1的值。
最佳答案
  • 五星知识达人网友:妄饮晩冬酒
  • 2021-02-23 18:24
代码如下:
#include
#include
using namespace std;
class Date
{
public:
void getdata();
void print();
private:
int year;
int month;
int day;
}D;

void Date::getdata()
{
cout<<"输入年:";
cin>>year;
for (int i=0; ; )
{
cout<<"输入月:";
cin>>month;
if (month>12||month<1)
{
cout<<"输入错误,重新输入!"< i++;
}
else
break;
}
for (int j=0; ; )
{
cout<<"输入日:";
cin>>day;
if (day>31||day<1)
{
cout<<"输入错误,重新输入!"< j++;
}
else
break;
}
}
void Date::print()
{
string n;
switch(month)
{
case 1:n="January";break;
case 2:n="February";break;
case 3:n="March";break;
case 4:n="April";break;
case 5:n="May";break;
case 6:n="June";break;
case 7:n="July";break;
case 8:n="August";break;
case 9:n="September";break;
case 10:n="October";break;
case 11:n="November";break;
case 12:n="December";break;
}
cout< cout< cout< }

int main()
{
D.getdata();
D.print();
return 0;
}
全部回答
  • 1楼网友:毛毛
  • 2021-02-23 19:56

这个程序唯一难的地方是进行加一天的运算,要判断是否闰年和是否是二月份。

下面是我写的程序:

#include <iostream> using namespace std;

const int days[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; class date { private: int day; int month; int year;

public: date(int y=1900, int m=1, int d=1) { setdate(y,m,d); }

void setdate(int y, int m, int d); void print(); void incrementday(); bool leapyear(int y); bool endofmonth(int d); };

void date::setdate(int y, int m, int d) { year=(y>0) ? y : 1900; month=(m>=1 && m<=12) ? m : 1; if (month==2 && leapyear(y)) day=(day>=1 && day<=29) ? d : 1; else day=(d>=1 && d<=days[month])? d : 1; }

void date::print() { cout<<"日期:\n年:"<<year<<" 月:"<<month<<" 日:"<<day<<endl; }

void date::incrementday() { if (endofmonth(day) && month==12) { day=1; month=1; ++year; } else if (endofmonth(day)) { day=1; ++month; } else ++day; }

bool date::leapyear(int y) { if (y%400==0 || (y%100!=0 && y%4==0)) return true; else return false; }

bool date::endofmonth(int d) { if (month==2 && leapyear(year)) return d==29; else return d==days[month]; }

int main() { date date1,date2(2000,12,31); date1.print(); date2.print(); date2.incrementday(); date2.print(); return 0; }

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯