第七周项目2-友元类(加强版)
来源:互联网 发布:信誉出肉 淘宝 编辑:程序博客网 时间:2024/06/05 11:55
问题及代码:
/* *copyright (t) 2016,烟台大学计算机学院 *All rights reserved. *文件名称:test.cpp *作者:张晴晴 *完成日期:2016年4月17日 *版本号:v1.0 *问题描述:一个时间类一个日期类,两个类合并为一个,时间每次加一秒,共加100次。*输入描述:无。 *程序输出:输出时间信息。 */ #include<iostream>using namespace std;class Date;class Time{public: Time(int h,int m,int s):hour(h),minute(m),sec(s){} void add_a_second(Date &);//增加一秒,一秒后可能会到了下一天,乃到下一月,下一年 void display(Date &); //显示时间,格式: 月/日/年 时:分:秒private: int hour; int minute; int sec;};class Date{public: Date (int mon,int da,int ye):month(mon),day(da),year(ye){} friend class Time;//time为date的友元类private: int month; int day; int year;}; void Time::add_a_second(Date &a)//增加一秒,一秒后可能会到了下一天,乃到下一月,下一年 { sec+=1; if(sec>=60) { minute+=sec/60; sec=sec%60; } if(minute>=60) { hour+=minute/60; minute=minute%60; } if(hour>=24) { a.day+=hour/24; hour=hour%24; } //开始注意月份啦 if(a.month==1||a.month==3||a.month==5||a.month==7||a.month==8||a.month==10||a.month==12) { if(a.day>31) { a.month+=a.day/31; a.day=a.day%31; } } if(a.month==4||a.month==6||a.month==9||a.month==11) { if(a.day>30) { a.month+=a.day/30; a.day=a.day%30; } } if(a.month==2) { if((a.year%4==0&&a.year%100!=0)||a.year%400==0) { if(a.day>29) { a.month+=a.day/29; a.day=a.day%29; } } else { if(a.day>28) { a.month+=a.day/28; a.day=a.day%28; } } } if(a.month>12) { a.year+=a.month/12; a.month=a.month%12; } } void Time::display(Date &d) //显示时间,格式: 月/日/年 时:分:秒 { cout<<d.year<<"/"<<d.month<<"/"<<d.day<<" "<<hour<<":"<<minute<<":"<<sec<<endl; }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;}
运行结果:
知识点总结:
这次注意了月份的不同导致的时间的不同。
学习心得:
判断闰年的时候那个长的条件要打括号否则会有警告;
那个if和else后面编写内容是最好也加上括号。
0 0
- 第七周项目2-友元类(加强版)
- 第七周项目2-友元类(2)
- 第七周项目2-友元类(2)
- 第七周项目2-友元类(1)
- 第七周项目2-友元类(1)
- 第七周 项目2 友元类
- 第七周项目2友元类
- 第七周【项目2-友元类】
- 第七周项目2-友元类
- 第七周项目2-友元类
- 第七周项目 友元类
- 第七周项目:友元类
- 第七周项目2
- 第七周项目2
- 第七周项目2
- 第七周项目2
- 第七周 项目2
- 第七周 【项目2
- iOS学习笔记-----Block初探
- 利用FutureTask和ExecutorService实现一个任务拆分成多个任务,实现性能提高
- 第8周项目1(3)用多文件的方式组织最后的程序
- qemu模拟Cortex-A57运行Linux4.5.1
- Android--->Incorrect line ending: found carriage return (\r) without corresponding newline (\n)
- 第七周项目2-友元类(加强版)
- iOS 检测字符串输入是否为合法数字
- linux shell基本命令
- Android View事件的分发机制
- mac或者linux下adb连接不上
- Spring事务配置的五种方式
- java集合-HashMap(JDK1.8)
- App架构设计经验之谈
- 一道关于图种的题