./* (程序头部注释开始)
02.* 程序的版权和版本声明部分
03.* Copyright (c) 2011, 烟台大学计算机学院学生
04.* All rights reserved.
05.* 文件名称:
06.* 作 者:苗向前
07.* 完成日期: 2012 年 4 月 5 日
08.* 版 本 号:
09.
10.* 对任务及求解方法的描述部分
11.* 输入描述:
12.* 问题描述:
13.* 程序输出:
14.* 程序头部的注释结束
15.*/
16.#include<iostream>
17.
18.#include <iomanip>
19.
20.using namespace std;
21.
22.class Time
23.{
24.public:
25.
26. Time(int = 0, int = 0, int = 0);
27.
28. void show_time( ); //根据is_24和from0,输出适合形式-20:23:5/8:23:5 pm/08:23:05 pm
29.
30. void add_seconds(int); //增加n秒钟
31.
32. void add_minutes(int); //增加n分钟
33.
34. void add_hours(int); //增加n小时
35.
36. static void change24(); //改变静态成员is_24,在12和24时制之间转换
37.
38. static void changefrom0(); //改变静态成员from0,切换是否前导0
39.
40.private:
41.
42. static bool is_24; //为true时,24小时制,如20:23:5;为flase,12小时制,显示为8:23:5 pm
43.
44. static bool from0; //为true时,前导0,8:23:5显示为08:23:05
45.
46. int hour;
47.
48. int minute;
49.
50. int sec;
51.};
52.
53.bool Time :: is_24 = true ;//在类体外对静态数据成员进行初始化
54.
55.bool Time :: from0 = false;
56.
57.Time :: Time(int h,int m,int s):hour(h),minute(m),sec(s){}
58.
59.void Time :: show_time()
60.{
61. if ( is_24 && !from0 ) //原来是这样用的。。。
62. {
63. cout << hour << " : " << minute << " : " << sec <<endl;
64. }
65. if ( is_24 && from0 )
66. {
67. cout << setw(2) << setfill('0') << hour << " : " << setw(2) << setfill('0') << minute
68. << " : " << setw(2) << setfill('0') << sec << endl;
69. }
70. if ( !is_24 && from0 )
71. {
72. if ( hour > 12 )
73. {
74. cout << setw(2) << setfill('0') << hour - 12 << " : " << setw(2) << setfill('0') << minute
75. << " : " << setw(2) << setfill('0') << sec << '\t' <<"pm" << endl;
76. }
77. else
78. {
79. cout << setw(2) << setfill('0') << hour << " : " << setw(2) << setfill('0') << minute
80. << " : " << setw(2) << setfill('0') << sec <<'\t' << " am" << endl;
81. }
82. }
83.}
84.
85.
86.void Time :: add_seconds( int s )
87.{
88. sec += s;
89.
90. if ( sec > 60 )
91. {
92. minute = ( sec - 60 ) % 60;
93.
94. sec = 0;
95. }
96.}
97.
98.void Time :: add_minutes( int m) //增加n分钟
99.{
100. minute += m;
101.
102. if( minute > 60)
103. {
104. hour = (minute - 60) % 60;
105.
106. minute = 0;
107. }
108.}
109.void Time :: add_hours(int h) //增加n小时
110.{
111. hour += h;
112.
113. if(hour > 24)
114. {
115. hour = (hour - 24) % 24;
116. }
117.}
118.
119.void Time :: change24()//改变静态成员is_24,在12和24时制之间转换
120.{
121. is_24 = false;
122.}
123.void Time :: changefrom0() //改变静态成员from0,切换是否前导0
124.{
125. from0 = true;
126.}
127.int main( )
128.{
129. Time t1(23,14,25),t2(8,45,6);
130.
131. cout << "24时制, 不前导0:" << endl;
132.
133. cout << "t1是:";
134.
135. t1.show_time();
136.
137. cout << "t2是:";
138.
139. t2.show_time();
140.
141. t1.add_hours(10);
142.
143. t2.add_hours(10);
144.
145. Time::changefrom0(); //注意此处调用静态成员
146.
147. cout << "10小时后, 切换是否前导0:" << endl;
148.
149. cout << "t1是:";
150.
151. t1.show_time();
152.
153. cout<< "t2是:";
154.
155. t2.show_time();
156.
157. t1.change24();
158.
159. cout << "换一种制式:" << endl;
160.
161. cout << "t1是:";
162.
163. t1.show_time();
164.
165. cout << "t2是:";
166.
167. t2.show_time();
168.
169. system("pause");
170.
171. return 0;
172.}
上机感言:
is_24 && !from0的应用挺不错的。