C++ 中如何计算时间差?
了解的帮忙:C++中如何依据用户输入的两个时间点(hh:mm),来计算出间的时间差(分钟表示)?送20分。谢谢。...
了解的帮忙:
C++ 中如何依据用户输入的两个时间点(hh : mm),来计算出间的时间差(分钟表示)?
送20分。谢谢。 展开
C++ 中如何依据用户输入的两个时间点(hh : mm),来计算出间的时间差(分钟表示)?
送20分。谢谢。 展开
4个回答
展开全部
#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分
请按任意键继续. . .
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分
请按任意键继续. . .
展开全部
方法一:
//在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就是所求的时间差!
//在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就是所求的时间差!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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;
}
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;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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;//问是否循环
}
}
这是求两个时间的时间差
你稍稍修改下就行
方法很笨
希望高手能告诉个简单点的学习下~~
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;//问是否循环
}
}
这是求两个时间的时间差
你稍稍修改下就行
方法很笨
希望高手能告诉个简单点的学习下~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询