这题有当时有点悲剧,因为初学编程思想还不能按照计算机的思路,但是还好有提示啦和上机课辅导老师~请教了一下就没问题了~
【问题】
编写程序,当输入两个时刻(如按照“时 分 秒”格式进行输入)以后,求出这两个时刻的时间差(按秒计算)并打印到屏幕上。
【提示】
1.通过cin输入的数据要判断合法性。即 [时] 应大于等于0小于等于23,分秒 应大于等于0,小于等于59;
2.时间差计算方法:计算出两个时刻各自距离0时0分0秒的总秒数,然后求出两者差的绝对值。
3.用到求绝对值函数abs时,需要include <math.h> 因为学校换成了VS,所以应该是<cmath>
【代码】
/*************
* 7sDream 13.09.25
* P18 自立题2
************/
#include <iostream>
#include <windows.h>
#include <cmath>
using namespace std;
int main()
{ //======定义函数========
bool Check_Input(int, int, int);
//======定义变量========
int hour1,minute1,second1;
int hour2,minute2,second2;
int total1,total2,X;
//======输入数据========
cout<<"请输入第一个时刻【时 分 秒】:";
cin>>hour1>>minute1>>second1;
cout<<"请输入第二个时刻【时 分 秒】:";
cin>>hour2>>minute2>>second2;
//=======计 算=========
if(Check_Input(hour1, 0, 23) && Check_Input(hour2, 0, 23) && Check_Input(minute1, 0, 59) && Check_Input(minute2, 0, 59) && Check_Input(second1, 0, 59) && Check_Input(second2, 0, 59))
{
total1 = hour1 * 60 * 60 + minute1 * 60 + second1;
total2 = hour2 * 60 * 60 + minute2 * 60 + second2;
X = abs(total1 - total2 );
//=======输 出==========
cout<<"时间差是"<<X<<"秒";
}else{
cout<<"时间格式不对!!";
}
system("pause");
return 0;
}
bool Check_Input(int val, int min, int max)
{
if(val >= min && val <= max)
{
return true;
}
else
{
return false;
}
}
/**********
* 7sDream
*********/
【结果】
问了老师一下怎么判断合法性,老师乖乖的教了我用函数0.0 说可以看上去简洁一点 所以我好像在还没教函数的时候就一直在用函数了 谢谢上机课老师~~~
那个Check_Input函数就是判断合法性的。
那个提示里的加粗部分,求差的方法TUT我是想不出来,这方法真简单!在以后的作业里也用过,真好用。
然后这节课还学到了一个cmath,我就google了一下它里面有哪些函数,表示收获很大哇嘎嘎