1.题目
2-2 Time类的定义
Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
通过本题目的练习可以掌握类与对象的定义;
设计一个时间类Time,私有数据成员有hour(时)、minute(分)、second(秒);
公有成员函数有:setHour(int)设置数据成员hour的值(采用12小时制),非法的输入默认为12;setMinue(int)设置数据成员minute的值,非法输入默认为0;setSecond(int)设置数据成员second的值,非法输入默认为0;setTime(int,int,int)设置时、分、秒三个数据成员的值; showTime()显示时间对象的值。
在主函数main()中调用相应成员函数,使得时间对象的值能从键盘接收,并正确显示。
提示:时、分、秒均按2位数值形式显示 。
Input
输入3个整数,用一个空格间隔
Output
输出 时、分、秒的值,中间用“:”间隔
Sample Input
10 11 12
Sample Output
10:11:12
Hint
输入
58 23 85
输出
12:23:00
2.正确代码
#include <iostream>
#include<iomanip>
using namespace std;
class Time
{
int hour,minute,second;
public:
void setHour(int a=12){hour=a;}
void setMinute(int b=0){minute=b;}
void setSecond(int c=0){second=c;}
void showTime()
{
cout << setw(2)<<setfill('0')<< hour << ':' << setw(2)<<setfill('0') << minute << ':' << setw(2)<<setfill('0') << second <<endl;
}
};
int main()
{
Time t;
int a,b,c;
cin >> a >> b >> c;
if(a>=0&&a<=12)
t.setHour(a);
else
t.setHour();
if(b>=0&&b<=60)
t.setMinute(b);
else
t.setMinute();
if(c>=0&&c<=60)
t.setSecond(c);
else
t.setSecond();
t.showTime();
return 0;
}
3.代码解读
这里对于补零输出,其实直接使用printf()
函数就好,这里说一下正规的方法。
但这里就专门说明一下这个填充零使用方法。
首先定义好头函数#include<iomanip>
;
其次,我们在需要修改输出的变量前加上这段setw(2)<<setfill('0')
;
然后就能实现填充零来输出,举一反三,其他的同理。