补1

一、问题及代码
/*  
* 文件名称:console.cpp  
* 作    者:潘维涵  
* 完成日期:2017 年 5 月 7 日  
* 版 本 号:v1.0  
* 对任务及求解方法的描述部分: 
* 输入描述:无  
* 问题描述:输出增加1秒后的年月日
* 程序输出: 年月日时分秒 
* 问题分析:使用友元类 
* 算法设计:略  
*/    
#include
using namespace std;
class Date; //对Date类的提前引用声明  
class Time
{
public:
	Time(int, int, int);
	void add_a_second(Date &);  //增加1秒,1秒后可能会到了下一天,乃到下一月、下一年  
	void display(Date &);  //显示时间,格式:月/日/年 时:分:秒  
private:
	int hour;
	int minute;
	int sec;
};
Time::Time(int a, int b, int c)
{
	hour = a;
	minute = b;
	sec = c;
}

class Date
{
public:
	Date(int, int, int);
	friend class Time; //Time为Date的友元类  
private:
	int month;
	int day;
	int year;
};
Date::Date(int x, int y, int z)
{
	month = x;
	day = y;
	year = z;
}
int main()
{
	Time t1(23, 59, 32);
	Date d1(12, 31, 2013);   //测试时,再试试Date d1(2,28,2013)会如何  
	for (int i = 0; i <= 100; i++)
	{
		t1.add_a_second(d1);
		t1.display(d1);
	}
	return 0;
}
//下面定义两个类中的成员函数,要求不得再增加成员函数  
//注意体会在Time的成员函数中可以调用Date类的私有数据成员     
void Time::add_a_second(Date&d1)
{
	sec++;
	if (sec == 60)
	{
		sec = 0;
		minute++;
		if (minute == 60)
		{
			minute = 0;
			hour++;
			if (hour == 24)
			{
				hour = 0;
				d1.day++;
				if (d1.day == 30)
				{
					d1.month++;
					d1.day = 1;
					if (d1.month == 12)
					{
						d1.month = 1;
						d1.year++;
					}
				}
			}
		}
	}
}
void Time::display(Date&d1)
{
	cout << "月:" << d1.month << " 日:" << d1.day << " 年:" << d1.year << " " << hour << ":" << minute << ":" << sec << endl;
}
二、运行结果:

你可能感兴趣的:(c++)