C++ 秒表

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

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程