前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >日期时间合并输出(友元函数)

日期时间合并输出(友元函数)

作者头像
叶茂林
发布2023-07-30 09:50:44
1550
发布2023-07-30 09:50:44
举报
文章被收录于专栏:叶子的开发者社区

题目描述

已知日期类CDate,有属性:年、月、日,其他成员函数根据需要自行编写,注意该类没有输出的成员函数。

已知时间类CTime,有属性:时、分、秒,其他成员函数根据需要自行编写,注意该类没有输出的成员函数。

现在编写一个全局函数把时间和日期的对象合并起来一起输出,

函数原型为:void Display(CDate &, CTime &)

函数输出要求为:

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行

输入样例1 

2 2017 3 3 19 5 18 1988 12 8 5 16 4

输出样例1

2017-03-03 19:05:18 1988-12-08 05:16:04

思路分析

嗯,这道题不难,就是略微考查友元函数的知识。

友元函数就是把一个不属于类的函数声明为自己这个类的朋友给予这个函数可以访问私有数据的权限。

题目的意思就是要我们把日期和时间合并起来输出,要求这个合并是在友元函数里面完成。

注意到C++的输出控制格式,要包含头文件iomanip,用到setw()控制位宽,setfiil()选择填充的字符。

AC代码

代码语言:javascript
复制
#include<iostream>
#include<iomanip>
using namespace std;
class CDate;
class CTime
{
	private:
		int hour,min,sec;
	public:
		friend void Display(CDate &,CTime &);
		void input()
		{
			cin>>hour>>min>>sec;
		}
};
class CDate
{
	private:
		int year,month,day;
	public:
		friend void Display(CDate &,CTime &);
		void input()
		{
			cin>>year>>month>>day;
		}
};
void Display(CDate & date,CTime & time)
{
	cout<<date.year<<'-'<<setfill('0')<<setw(2)<<date.month<<'-'<<setw(2)<<date.day<<' '<<setw(2)<<time.hour<<':'<<setw(2)<<time.min<<':'<<setw(2)<<time.sec<<endl;
	
}
int main()
{
	int t;
	CDate date;
	CTime time;
	cin>>t;
	while(t--)
	{
		date.input();
		time.input();
		Display(date,time);
	}
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目描述
  • 思路分析
  • AC代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档