您的位置:首页 > 其它

第五周项目(2)-时间类(1)【典型错误】

2016-03-31 12:45 225 查看

/*

*copyright (c) 2016,烟台大学计算机学院

*All rights reserved.

*文件名称:hellow.cpp

*作者:田甜

*完成日期:2016年3月31日

*版本号:v1.0

*

*问题描述:构造时间类

*输入描述:输入时、分、秒

*程序输出:修改后的时间

*/

问题及代码:

#include <iostream>

using namespace std;

class Time
{
public:
void set_time();
void show_time();
void add_a_sec()
{
if(isTime(sec,minute,hour))
sec++;
if(sec>=60)
{
add_a_sec();
sec=0;
}

}
void add_a_min()
{
if(isTime(sec,minute,hour))
minute++;
if(minute>=60)
{
add_a_hour();
minute=0;
}
}
void add_a_hour()
{
if(isTime(sec,minute,hour))
hour++;
if(hour>=24)
hour=0;

}
private:
bool isTime(int a,int b,int c);
int sec,minute,hour;
};

bool Time::isTime(int a,int b,int c)
{
if(a<0||a>=60||b<0||b>=60||c<0||c>=60)
return false;
return true;
}

void Time::set_time()
{
char c1,c2;
cout<<"请输入时间(格式:hh:mm:ss):";
while(1)
{
cin>>hour>>c1>>minute>>c2>>sec;
if(c1!=':'||c2!=':')
cout<<"格式错误,重新输入。"<<endl;
if(!isTime(hour,minute,sec))
cout<<"时间非法,重新输入。"<<endl;
else break;
}
}
void Time::show_time()
{
cout<<hour<<":"<<minute<<":"<<sec<<endl;
}

int main()
{
Time t1;
t1.set_time();
t1.add_a_sec();
t1.add_a_min();
t1.add_a_hour();
t1.show_time();
return 0;
}

运行结果:



错误分析:

在调用函数add_a_sec()后已经通过嵌套调用得到了结果0:0:0

后面的两句调用函数add_a_min add_a_hour 反而使min和hour 再次加1造成了错误
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: