中易网

帮忙写个C++程序。。关于时间类的。。

答案:1  悬赏:10  
解决时间 2021-04-28 05:38
  • 提问者网友:曖昧情执
  • 2021-04-27 19:56

定义一个日期类:要求如下
(1)实现私有数据成员 :年,日,月;
(2)带缺省参数的构造函数与拷贝函数;
(3)包含分别提取年、日、月的成员函数;
(4)包含分别设置年、日、月的成员函数;
(5)判断年号是否为闰年的函数;
(6)求该日期对应试星期几的成员函数;
(7)完成日期输入与输出的成员函数;

最好有注释。。谢谢了。。

最佳答案
  • 二级知识专家网友:野心和家
  • 2021-04-27 20:35
#include
using namespace std;
int gt(int y,int m) //求y年m月的天数
{
switch(m)
{
case 4:case 6:case 9:case 11:return(30);
case 2:return(!(y%4)&&(y%100)||!(y%400)?29:28);
}
return(31);
}
class date //定义日期类
{
private:
int year,month,day;//私有函数成员 年、月、日
public:
date(){};//缺省参数的构造函数
~date(){};//析构函数
date(int Nyear,int Nmonth,int Nday)//构造函数
{
year=Nyear;
month=Nmonth;
day=Nday;
};
date(date &a)//拷贝构造函数
{
year=a.year;
month=a.month;
day=a.day;
};
void Setyear(int Nyear)//设置年份
{
year=Nyear;
};
void Setmonth(int Nmonth)//设置月份
{
month=Nmonth;
};
void Setday(int Nday)//设置号数
{
day=Nday;
};


int Getyear()//获取年份
{
return year;
};
int Getmonth()//获取月份
{
return month;
};
int Getday()//获取号数
{
return day;
};
void output()//输出年、月、日的函数
{
cout <<"日期是:"<<year<<"."<<month<<"."<<day<<endl;
};
void input()//输出年、月、日的函数
{
cin >>year>>month>>day;
} ;
void puanduan();//判断是否为闰年的函数
void deal();//计算日期是星期几的函数
};
void date::puanduan()//判断是否为闰年
{
if((year%4==0&&year%100!=0)||year%400==0)
cout <<year<<"/"<<month<<"/"<<day<<"中的这个年份是闰年!\n";
else
cout <<year<<"/"<<month<<"/"<<day<<"中的这个年份不是闰年!\n";
}
void date::deal()//计算日期是星期几
{
long n;
int i,s=0;
n=(year-1)*365L+(year-1)/4-(year-1)/100+(year-1)/400+1;
//计算year年1月1日距0001年01月01日的天数
for(i=1;i<=month-1;i++)
{
s=s+gt(year,i);//计算year年moth-1月1日到year年1月1日的天数
}
n=n+s+day-1;//计算year年moth月day日距0001年01月01日的天数



switch(n%7)//推算是星期几
{
case 1: cout <<year<<"/"<<month<<"/"<<day<<"是星期一\n";break;
case 2: cout <<year<<"/"<<month<<"/"<<day<<"是星期二\n";break;
case 3:cout <<year<<"/"<<month<<"/"<<day<<"是星期三\n";break;
case 4:cout <<year<<"/"<<month<<"/"<<day<<"是星期四\n";break;
case 5:cout <<year<<"/"<<month<<"/"<<day<<"是星期五\n";break;
case 6:cout <<year<<"/"<<month<<"/"<<day<<"是星期六\n";break;
case 7:cout <<year<<"/"<<month<<"/"<<day<<"是星期天\n";break;
}
}
void main()
{
date a(2010,4,18),b(a),c,d;
c.input(); //输入c的年、月、日
d.Setyear(2009);//设置d的年份为2009年
d.Setmonth(10); //设置d的月份为10月
d.Setday(3); //设置d的号数是3号
a.output(); //输出a的年、月、日
b.output(); //输出b的年、月、日
c.output(); //输出c的年、月、日
d.output(); //输出d的年、月、日
a.puanduan(); //判断并输出a的年份是否为闰年
b.puanduan(); //判断并输出b的年份是否为闰年
c.puanduan(); //判断并输出c的年份是否为闰年
d.puanduan(); //判断并输出d的年份是否为闰年
a.deal(); //计算并输出a是星期几
b.deal(); //计算并输出b是星期几
c.deal(); //计算并输出c是星期几
d.deal(); //计算并输出d是星期几
cout <<d.Getyear()<<"."<<d.Getmonth()<<"."<<d.Getday()<<endl;
//提取输出d的年、月、日
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息