C语言 简单秒表程序

C语言 简单秒表程序

在下面的教程中,我们将创建一个数字秒表的C程序。键盘敲击函数被缩写为 keyboardhit()。按下一个键后,它发出一个信号并输出一个不为零的整数。这里面有四个循环:第一个循环计算小时,第二个循环计算分钟,第三个循环计算秒,第四个循环保持秒的速度(3循环)。在这个程序执行后,当键盘上的启动键被敲击时,会产生一个信号。有一个变量(c)用于存储键盘键;如果c等于p键,则调用等待函数。

线程

线程的另一个名字是轻量级进程。通过将一个进程分解成若干个线程,旨在实现并行化。例如,浏览器中的许多标签可能代表各种线程。MS Word使用多个线程,包括一个用于处理输入,另一个用于格式化文本。以下是对多线程的进一步优势的讨论。

等待系统调用

在其一个子进程结束或收到信号之前,对wait()的调用会暂停调用者的进程。子进程退出后,父进程在wait系统调用命令后继续运行。

子进程可能因为以下任何原因而结束。

  • 从main,它调用exit()
  • 返回(一个int)。
  • 当收到一个信号时(由操作系统或另一个进程),它的默认反应是终止。

简单秒表的程序

#include 
#include 

int main()
{
    printf("*#This is a stopwatch#*\n\n\n");
    printf("**Press 'p' to pause.\n");
    printf("**Press any key to start & to stop.");
    getch();
    system("cls");
    printf("\t\t*#This is a stopwatch#*\n\n\n");

    clock_t s, n;
    s = clock();

    while (1)
    {
        while (1)
        {
            n = clock();
            printf("\r");
            printf("Time-\t %d : %d : %d ", ((n - s) / 1000) / 60, ((n - s) / 1000) % 60, (n - s) % 1000);
            if (kbhit())
                break; // kbhit() does not read the character
        }

        if (getch() == 'p')
        {
            printf("\rTime-\t %d : %d : %d ", ((n - s) / 1000) / 60, ((n - s) / 1000) % 60, (n - s) % 1000);
            getch();
        }
        else
            break;

        s = s + (clock() - n); // split time
        // s=clock();    //lap time
    }

    printf("\rTime-\t %d : %d : %d ", ((n - s) / 1000) / 60, ((n - s) / 1000) % 60, (n - s) % 1000);

    getch();
    getch(); // to read the extra characters
    printf("\n\n\n");

    return 0;
}

输出

*#This is a stopwatch#*
**Press 'p' to pause.
**Press any key to start & to stop.

*#This is a stopwatch#*
Time-    0 : 7 : 784

解释

当线程在后台执行时,我们在等待start(键盘上的任意键)键被按下。按下any键后,线程再次跃迁到线程连接函数;如果按下p键,循环都以0重启;如果触及s键,线程跳到起始标签;如果按下e键,线程调用exit()函数,终止程序。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程