C++ 中如何计算时间差?

了解的帮忙:C++中如何依据用户输入的两个时间点(hh:mm),来计算出间的时间差(分钟表示)?送20分。谢谢。... 了解的帮忙:

C++ 中如何依据用户输入的两个时间点(hh : mm),来计算出间的时间差(分钟表示)?

送20分。谢谢。
展开
 我来答
花式码农
2007-11-02 · TA获得超过1.7万个赞
知道大有可为答主
回答量:4894
采纳率:0%
帮助的人:4781万
展开全部
#include <iostream>
using namespace std;

int compute(int,int,int,int);
int main()
{
cout<<"请输入第一个时间:";
int h1 = 0;
int m1 = 0;
cin>>h1>>m1;
if(h1<0||m1<0||h1>24||m1>59)
{
cout<<"错误!\n";
return 1;
}
cout<<"输入第二个时间:";
int h2,m2;
cin>>h2>>m2;
if(h2<0||h2>24||m1<0||m2>59)
{
cout<<"错误!\n";
return 1;
}

cout<<"时间差是:"<<compute(h1,m1,h2,m2)<<"分"<<endl;
return 0;
}
int compute(int hour1,int minute1,int hour2,int minute2)
{
int result = 0;
result = (hour1-hour2)*60+(minute1-minute2);
if(result>0)
return result;
else
return -result;
}
请输入第一个时间:11 55
输入第二个时间:18 40
时间差是:405分
请按任意键继续. . .
镇岳邸嘉德
2019-03-31 · TA获得超过3879个赞
知道大有可为答主
回答量:3169
采纳率:26%
帮助的人:196万
展开全部
方法一:
//在windows下实现(毫秒级):
DWORD
dwStart
=
GetTickCount();
//取windows启动到现在的流逝时间(毫秒)
Run_Your_Func(...);
//运行你的函数
DWORD
dwUsed
=
GetTickCount()
-
dwStart;
//计算该函数所消耗的时间
方法二:
比微秒还准依赖于电脑处理器!
class
CTimer
{
public:
CTimer()
{
QueryPerformanceFrequency(&m_Frequency);
Start();
}
void
Start()
{
QueryPerformanceCounter(&m_StartCount);
}
double
End()
{
LARGE_INTEGER
CurrentCount;
QueryPerformanceCounter(&CurrentCount);
return
double(CurrentCount.LowPart
-
m_StartCount.LowPart)
/
(double)m_Frequency.LowPart;
}
void
ShowNow()
{
LARGE_INTEGER
CurrentCount;
QueryPerformanceCounter(&CurrentCount);
cout<<"Timer
Count
is:"<<double(CurrentCount.LowPart
-
m_StartCount.LowPart)
/
(double)m_Frequency.LowPart<<endl;
}
private:
LARGE_INTEGER
m_Frequency;
LARGE_INTEGER
m_StartCount;
};
下面程序,比如:
int
a;
for
(
int
i
=
0;
i
<
10000;,
i++
)
a++;
想测它的时间这样写:
CTimer
t;
int
a;
for
(
int
i
=
0;
i
<
10000;,
i++
)
a++;
cout<<"用时"<<t.end()<<"秒"<<endl;
方法三:
#include
"window.h"
#define
BEGIN_RECORD\
{\
long
____temp_begin_time___;\
____temp_begin_time___=::GetTickCount();
#define
END_RECORD(dtime)\
dtime=::GetTickCount()-____temp_begin_time___;\
}
用法:
long
tim;
BEGIN_RECORD
被测函数;
END_RECORD(tim);//tim就是所求的时间差!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
czq241
推荐于2016-06-19 · TA获得超过241个赞
知道小有建树答主
回答量:251
采纳率:0%
帮助的人:0
展开全部
#include<iostream.h>
void main()
{
int h1,m1,h2,m2,result=0;
char c;
cout<<"请输入较早时间(HH:MM):";
cin>>h1>>c>>m1;
cout<<"请输入较晚时间(HH:MM):";
cin>>h2>>c>>m2;
if(m2<m1)
{
m2+=60;
h2-=1;
}

result+=(h2-h1)*60+m2-m1;
if(result<0)
cout<<"Error!"<<endl;
else
cout<<"result="<<result<<endl;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
谷可欣巨君
2019-02-02 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.2万
采纳率:27%
帮助的人:1988万
展开全部
#include
void
main()
{
int
h1,h2,m1,m2,s1,s2,n,m,t;
char
cont;
bool
quit=true;
while
(quit)
{
cout<<"input
the
first
time:";
for(cin>>h1>>m1>>s1;(h1>=24
||
m1>=60
||
s1>=60);cin>>h1>>m1>>s1)//判断输入时间是否非法
cout<<"error!please
input
again!"<
>h2>>m2>>s2;(h2>=24
||
m2>=60
||
s2>=60);cin>>h2>>m2>>s2)//同上
cout<<"error!please
input
again!"<
m)t=n-m;
else
t=m-n;//求时间差
cout<<"the
temp
is:"<
>cont;
if(cont=='n')
quit=false;//问是否循环
}
}
这是求两个时间的时间差
你稍稍修改下就行
方法很笨
希望高手能告诉个简单点的学习下~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式