第七周项目:友元类
2016-05-18 22:14
375 查看
<pre name="code" class="cpp">/* *Copyright(c)2016,烟台大学计算机学院 *All right reserved. *文件名称:test.cpp *作者:黄金婵 *完成日期:2016年5月18日 *版本号:v1.0 * *问题描述:为体验友元类,实际上本例并不一定是一个好的设计,将两个类的合并为一个DateTime,日期、时间都处理更好 *输入描述: *程序输出: */ #include <iostream> using namespace std; class Date; class Time { public: Time(int,int,int); void add_a_second(Date &); void display(Date &); private: int hour; int minute; int sec; }; class Date { public: Date(int month,int year,int day); friend class Time; private: int month; int day; int year; }; int main( ) { Time t1(23,59,32); Date d1(2,28,2013); for(int i=0; i<=100; i++) { t1.add_a_second(d1); t1.display(d1); } return 0; } Time::Time(int h,int m,int s) { hour=h; minute=m; sec=s; } Date::Date(int m,int d,int y) { month=m; day=d; year=y; } int days(int m, int y); void Time::add_a_second(Date &d) { if(++sec>=60) ++minute,sec-=60; if(minute>=60) ++hour,minute-=60; if(hour>=24) ++d.day,hour-=24; if(d.day>days(d.month,d.year)) ++d.month,d.day=1; if(d.month>12) ++d.year,d.month-=12; } void Time::display(Date &d) { cout<<d.year<<"年"<<d.month<<"月"<<d.day<<"日"; cout<<hour<<":"<<minute<<":"<<sec<<endl; } int days(int m, int y) { int d[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; if((y%4==0&&y%100!=0)||(y%400==0)) d[2]=29; return d[m]; }
知识点总结:在做此类题目时,最重要的是主意if语句的内容,其次是要注意闰年情况。我第一次做的时候输出时忘记了换行这样的小错误,输出的时候我还以为自己弄错了循环的方面,仔细一看才知道忘了换行。因此一定要注意细节。细节决定成败!
相关文章推荐
- Struts2_Action记录在线人数实例
- JavaSE和JavaEE的起步学习路线
- HDU - 2087 剪花布条(Kmp)
- 思维导图教你看懂----------Java IO流
- mysql事物级别的问题。
- ss命令使用示例
- 功能特色
- Splash Scrapyjs Connection was refused by other side: 111: Connection refused.
- 学会Retrofit,你可以参考的文章
- Python dictionary implementation
- PSP(5.4——5.10)以及周记录
- swift 2.2 语法 (中)
- python中join和split函数
- Java分页
- 聚集运算之group
- fspecial()函数解析
- 二叉树的前序、中序、后序线索化及遍历
- Drawable解析4——StateListDrawable和AnimationDrawable
- 非静态内部类
- 华为在线训练之16进制转换10进制