C++ 秒表
在本教程中,我们将学习如何在C++中制作一个计时器。当键盘上的任意键按下时,秒表开始计时,直到再次按下其他键才停止。让我们来学习如何在C++中构建一个计时器。
我们将在这个程序中使用一个名为 _kbhit() 的函数。
_kbhit()
这是一个用来检查按键是否被按下的特性。要使用这个函数,必须包含 conio.h 头文件。通常,它会验证按键是否被按下。当按键被按下时,会返回一个非零值。
C++中使用 _kbhit 函数的示例程序:
#include
#include
#include
int main ( )
{
while( !kbhit() )
cout<<" you haven't pressed a key.\ n ";
return 0;
}
输出:
You haven't pressed a key.
............................................
Process executed in 1.22 seconds
Press any key to continue.
我们还可以在C++的秒表程序中使用delay()方法。这个函数在“dos.h”头文件中声明,用于延迟程序执行一定的毫秒数。
void delay( unsigned int milliseconds ); //syntax
Unsigned int milliseconds是需要保持程序运行的毫秒数,而void是方法delay()的返回类型,它不返回任何内容。在这里,我们利用delay来清楚地注意到秒表的第二次增量。如果延迟为5000秒,则它等待5秒钟。
程序分解
# include
# include
# include
# include
我们将在我们的C++程序中包含整个必要的库,以避免任何类型的错误。
textbackground( BLUE );
clrscr();
int HH = 0, MM = 0, SS = 0;
cout << " \n\n\\t\t stopwatch";
cout << " \n\t\t HH : MM : SS";
cout << " \n\t\t " << HH << "\t" << MM << "\t" << SS;
cout << " \n\t\t press any key to start";
getch ();
在上面的代码中,我们实现了秒表的基本外观,其中小时用HH表示,分钟用MM表示,秒钟用SS表示。
while ( !kbhit() )
{
SS++;
delay ( 1000 );
if ( SS > 59 )
{
MM++;
SS = 0;
}
if ( MM > 59 )
{
HH++;
MM = 0;
}
clrscr ();
cout << " \n\t\t stopwatch";
cout << " \n\t\t HH : MM : SS";
cout << " \n\t\t " << HH << " : " << MM << " : " << SS;
cout << " \n\t\t press any key to stop";
}
在上述的C++代码中,当函数kbhit的返回值为真时,while循环执行。kbhit函数是用来检查某个键是否被按下的功能。要使用这个函数,必须包含conio。通常它验证一个键是否被按下。当一个键被按下时,会返回一个非零值。
getch ();
cout << "\n\t\t the time after pausing is" : cout << "\n\t\t" << HH << " : " << MM << " : " << SS;
getch ();
}
getch()是get character的缩写,conio.h库有一个预定义的函数叫做”it”。在Turbo C或Turbo C++中,我们使用getch来向用户显示字符。
用于创建C++中的秒表程序
# include
# include
# include
# include
void main ()
{
textbackground( BLUE );
clrscr();
int HH = 0, MM = 0, SS = 0;
cout << " \n\n\\t\t stopwatch";
cout << " \n\t\t HH : MM : SS";
cout << " \n\t\t " << HH << "\t" << MM << "\t" << SS;
cout << " \n\t\t press any key to start";
getch ();
while ( !kbhit() )
{
SS++;
delay ( 1000 );
if ( SS > 59 )
{
MM++;
SS = 0;
}
if ( MM > 59 )
{
HH++;
MM = 0;
}
clrscr ();
cout << " \n\t\t stopwatch";
cout << " \n\t\t HH : MM : SS";
cout << " \n\t\t " << HH << " : " << MM << " : " << SS;
cout << " \n\t\t press any key to stop";
}
getch ();
cout << "\n\t\t the time after pausing is" : cout << "\n\t\t" << HH << " : " << MM << " : " << SS;
getch ();
}
输出:
stopwatch
HH : MM : SS
0 : 0 : 22
press any key to stop
the time after pausing is
0 : 0 : 22
如果上面的代码在你的IDE上不能正常工作,可以尝试下面的代码:
我们在程序中还使用了Sleep()方法。
Sleep()
这个函数让程序暂停执行一定的毫秒数。它在”Windows.h”头文件中声明。
程序等待1秒后,我们增加了SS(秒)变量。当秒变量达到60时,我们将它设为零,并增加MM(分钟)变量。当分钟变量达到60时,我们将其重置为零,并增加HH(小时)变量。
程序分解
# include
# include
# include
# include
我们将包括整个必要的头文件,特别是windows.h,它可在指定的毫秒内执行程序。
system ( "CLS" );
int HH = 0, MM = 0, SS = 0;
cout << " \n\t\t stopwatch";
cout << " \n\t\t HH: MM: SS";
cout << " \n\t\t " << HH << " : " << MM << " : " << SS;
cout << " \n\t\t press any key to start";
_getch ();
就像我们在上面解释的秒表代码中一样,我们实现了秒表的基本外观,小时用HH表示,分钟用MM表示,秒数用SS表示。
while ( !_kbhit() )
{
SS++;
Sleep( 1000 );
if ( SS > 59 )
{
MM++;
SS = 0;
}
if ( MM > 59 )
{
HH++;
MM = 0;
}
system( "CLS" );
cout << " \n\t\t stopwatch";
cout << " \n\t\t HH: MM: SS";
cout << " \n\t\t " << HH << " : " << MM << " : " << SS;
cout << " \n\t\t press any key to stop";
}
在上面提到的C++代码中,while循环将在kbhit函数不为真时执行,即检查某个键是否已经被按下。要使用此函数,必须包含conio。通常,它验证某个键是否已经被按下。当按下键时,返回一个非零值。
另一个C++代码实现的秒表程序
# include
# include
# include
# include
using namespace std;
int main ()
{
system ( "CLS" );
int HH = 0, MM = 0, SS = 0;
cout << " \n\t\t stopwatch";
cout << " \n\t\t HH: MM: SS";
cout << " \n\t\t " << HH << " : " << MM << " : " << SS;
cout << " \n\t\t press any key to start";
_getch ();
while ( !_kbhit() )
{
SS++;
Sleep( 1000 );
if ( SS > 59 )
{
MM++;
SS = 0;
}
if ( MM > 59 )
{
HH++;
MM = 0;
}
system( "CLS" );
cout << " \n\t\t stopwatch";
cout << " \n\t\t HH: MM: SS";
cout << " \n\t\t " << HH << " : " << MM << " : " << SS;
cout << " \n\t\t press any key to stop";
}
_getch ();
cout << " \n\t\t the time after pausing is";
cout << " \n\t\t " << HH << " : " << MM << " : " << SS;
_getch ();
return 0 ;
}
输出:
stopwatch
HH: MM: SS
0 : 0 : 0
press any key to start
当按下一个键时,定时器开始计时,29秒后将显示以下输出:
stopwatch
HH: MM: SS
0 : 0 : 29
press any key to stop
并且紧接着:
stopwatch
HH: MM: SS
0 : 0 : 30
press any key to stop
目前,按下任意键将停止秒表并显示以下输出:
stopwatch
HH: MM: SS
0 : 0 : 30
press any key to stop
the time after pausing is
0 : 0 : 30