日期时间合并输出(友元函数)
题目描述
已知日期类Date,有属性:年、月、日,其他成员函数根据需要自行编写,注意该类没有输出的成员函数
已知时间类Time,有属性:时、分、秒,其他成员函数根据需要自行编写,注意该类没有输出的成员函数
现在编写一个全局函数把时间和日期的对象合并起来一起输出,
函数原型为:void Display(Date &, Time &)
函数输出要求为:
1、时分秒输出长度固定2位,不足2位补0
2、年份输出长度固定为4位,月和日的输出长度固定2位,不足2位补0
例如2017年3月3日19时5分18秒
则输出为:2017-03-03 19:05:18
程序要求
1、把函数Display作为时间类、日期类的友元
2、分别创建一个日期对象和时间对象,保存日期的输入和时间的输入
3、调用Display函数实现日期和时间的合并输出
输入
第一行输入t表示有t组示例
接着一行输入三个整数,表示年月日
再接着一行输入三个整数,表示时分秒
依次输入t组示例
输出
每行输出一个日期和时间合并输出结果
输出t行
示例输入
2
2017 3 3
19 5 18
1988 12 8
5 16 4
示例输出
2017-03-03 19:05:18
1988-12-08 05:16:04
#include<iostream>
#include<iomanip>
using namespace std;
class Date;
class Time
{
public:
Time(int hour1,int minute1,int second1)
{
hour=hour1;
minute=minute1;
second=second1;
}
friend void Display(Date& ,Time&);
private:
int hour;
int minute;
int second;
};
class Date
{
public:
Date(int year1,int month1,int day1)
{
year=year1;
month=month1;
day=day1;
}
friend void Display(Date& ,Time&);
private:
int year;
int month;
int day;
};
void Display(Date& Date1,Time& Time1)//定义的全局函数同时作为两个类的友元函数
{
cout<<Date1.year<<"-"<<setfill('0')<<setw(2)<<Date1.month<<"-"<<setfill('0')<<setw(2)<<Date1.day<<" "<<setfill('0')<<setw(2)<<Time1.hour<<":"<<setfill('0')<<setw(2)<<Time1.minute<<":"<<setfill('0')<<setw(2)<<Time1.second<<endl;
}
int main()
{
int i,t;
cin>>t;
for(i=0;i<t;i++)
{
int year1,month1,day1,hour1,minute1,second1;
cin>>year1>>month1>>day1>>hour1>>minute1>>second1;
Date Date1(year1,month1,day1);
Time Time1(hour1,minute1,second1);
Display(Date1,Time1);
}
return 0;
}