亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C語言小項目計時器的實現(xiàn)思路(倒計時+報警提示)

 更新時間:2021年11月18日 09:56:43   作者:小輝_Super  
這篇文章主要介紹了C語言小項目計時器(倒計時+報警提示)的實現(xiàn)思路,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

大家對計時器應(yīng)該不陌生,我們在制定一個計劃時,經(jīng)常喜歡設(shè)置一個倒計時來規(guī)定完成時限,等到計時結(jié)束,它還會報警提示,今天,我就用C語言編寫一個簡易的倒計時計時器。

實現(xiàn)思路

簡單介紹一下我的實現(xiàn)思路:
本文包括三個版本,分別是極簡版、普通版、高級版

  • 極簡版:簡單的單次倒計時,只能設(shè)置秒數(shù),計時通過Sleep()函數(shù)實現(xiàn)(粗略倒計時),先輸入秒數(shù)cnt,然后每過1秒(Sleep(1000),cnt減1,直到cnt變成0,就退出程序。
  • 普通版:可設(shè)置計時的、hour,min,sec),計時通過time()函數(shù)實現(xiàn)(用來獲取當(dāng)前系統(tǒng)時間的秒數(shù)),進入while循環(huán),判斷系統(tǒng)時間秒數(shù)是否變化,如有變化,說明過了1秒。這時將秒數(shù)sec減1,當(dāng)sec減到0,下一秒就將分鐘min減1,同時sec變?yōu)?9。分鐘min和小時hour的變化關(guān)系與秒和分鐘的關(guān)系類似。一直循環(huán)倒計時,直到hour,minsec都變?yōu)?,此時計時結(jié)束,進行報警提示printf(\a'))。
  • 高級版:在普通版的基礎(chǔ)上,增加重復(fù)計時暫停計時的功能。首先需要設(shè)定計時時間,然后按下空格鍵開始計時,再次按下空格鍵,可以暫停倒計時,同時設(shè)置的倒計時時間具有記憶功能,即計時結(jié)束后,再次按下空格,依然按照上次設(shè)定的計時時間進行計時。

 1.極簡版本

極簡版代碼很簡單,就不多作介紹了。

#include <stdio.h>
#include <Windows.h>     //Sleep(ms)
int main()
{
    int cnt = 0;
    puts("輸入秒數(shù)");
    scanf("%d", &cnt);
    while(cnt >= 0)
    {
        Sleep(1000);
        printf("%d\r", cnt);
        cnt--;
    }
    printf("計時結(jié)束\n");
    return 0;
}

運行效果

請?zhí)砑訄D片描述

2.普通版本

普通版本也很簡單,主要包括:

設(shè)置計時時間倒計時蜂鳴器報警(系統(tǒng)提示音)
#include <stdio.h>
#include <time.h>

int main(void)
{
    int hour = 0, min = 0, sec = 0;
    time_t time_sec = 0;
    time_t old_sec = 0;
    printf("請設(shè)置計時時間——時 分 秒\n");
    scanf("%d%d%d", &hour, &min, &sec);
    time(&time_sec);              //獲取當(dāng)前秒數(shù)(1970-1-1 00:00:00到現(xiàn)在)
    printf("倒計時——%02d:%02d:%02d\r", hour, min, sec);
    old_sec = time_sec;           //更新舊的秒數(shù)
    while(hour > 0 || min > 0 || sec > 0)
    {
        time(&time_sec);          //獲取秒數(shù)保存到time_t變量
        if(time_sec != old_sec)   //如果秒數(shù)改變(計時達到1秒)
        {
            old_sec = time_sec;   //更新舊的秒數(shù)
            if(sec > 0)
                sec--;            //計時秒數(shù)減1
            else
            {
                sec = 59;         //如果原秒數(shù)為0,則變?yōu)?9
                if(min > 0)
                    min--;        //計時分鐘減1
                else
                {
                    min = 59;     //如果分鐘數(shù)為0,則變?yōu)?9
                    hour--;       //計時小時數(shù)減1
                }
            }
            printf("倒計時——%02d:%02d:%02d\r", hour, min, sec);
        }
    }
    for(int i = 0; i < 5; i++)
    {
        printf("\a");             //響蜂鳴器(或系統(tǒng)提示音)
        sleep(1);                 //延時1秒,太短電腦不發(fā)出聲音
    }
    puts("\n計時結(jié)束\n");
    return 0;
}

運行效果

請?zhí)砑訄D片描述

3.高級版本

在普通版本的基礎(chǔ)上添加了菜單打印鍵盤按鍵掃描兩部分代碼。
程序的核心為 pause_flagmenu_flag這兩個標(biāo)志,前者控制倒計時的開始,暫停繼續(xù),后者控制菜單是否需要刷新(只有程序第一次運行、設(shè)置計時時間計時結(jié)束時才需要打印菜單)。

#include <stdio.h>
#include <time.h>
#include <conio.h>                 //kbhit()/_kbhit(),getch()
#include <Windows.h>               //Sleep(ms)

int main(void)
{
    //動態(tài)計時參數(shù)(打印值)
    unsigned int hour = 0, min = 0, sec = 0;
    //默認值(設(shè)定的計時參數(shù))
    unsigned int hour_def = 0, min_def = 0, sec_def = 0;
    time_t time_sec = 0;
    time_t old_sec = 0;
    char key;
    int pause_flag = 1;            //暫停標(biāo)志
    int menu_flag = 1;             //菜單打印標(biāo)志
    while(1)
    {
        /**************** 菜單打印 ****************/
        if(menu_flag == 1)
        {
            menu_flag = 0;
            system("cls");          //Windows系統(tǒng)清屏命令
            printf("================================\n"); //菜單
            if(hour_def || min_def || sec_def)
                printf("|\t倒計時時間:%02d:%02d:%02d\t |\n",\
                       hour_def, min_def, sec_def);
            else
                printf("|\t未設(shè)置計時時間\t\t|\n");
            printf("| S:設(shè)置 空格:開始/暫停 Q:退出 |\n");
            printf("================================\n");
            if(pause_flag == 0)
            {
                printf("計時結(jié)束\n");
                for(int i = 0; i < 5; i++)
                {
                    printf("\a");             //響蜂鳴器(或系統(tǒng)提示音)
                    sleep(1);                 //延時1秒,太短電腦不發(fā)出聲音
                }
                pause_flag = 1;          //停止計時

            }
        }

        /**************** 鍵盤按鍵掃描+操作 ****************/
        key = 0;
        if(_kbhit())                      //檢測到按鍵按下
            key = getch();                //讀取按鍵
        switch(key)
        {
            case 's':                     //按s/S設(shè)置計時時間
            case 'S':
                printf("請設(shè)置計時時間——時 分 秒\n");
                scanf("%d %d %d", &hour_def, &min_def, &sec_def);
                if(hour_def > 24 || min_def > 59 || sec_def > 59)
                {
                    //printf("時間設(shè)置失敗\n");
                    hour_def = min_def = sec_def = 0; //重置時間
                }
                hour = min = sec = 0;       //計時值清零
                menu_flag = 1;              //打印菜單
                break;
            case ' ':                       //按空格鍵開始/暫停計時
                if(hour_def || min_def || sec_def)   //如果時間有效
                {
                    if(pause_flag)
                    {
                        pause_flag = 0;     //開始計時或繼續(xù)計時
                        if(!hour && !min && !sec) //計數(shù)值為0
                        {
                            hour = hour_def;   //讀取上次設(shè)置的時間
                            min = min_def;
                            sec = sec_def;
                            //打印初始時間
                            printf("倒計時——%02d:%02d:%02d\r",\
                                   hour, min, sec);
                        }
                    }
                    else
                        pause_flag = 1;     //暫停計時
                    time(&time_sec);        //獲取當(dāng)前秒數(shù)(1970-1-1 00:00:00到現(xiàn)在)
                    old_sec = time_sec;     //更新舊的秒數(shù)
                }
                break;
            case 'q':
            case 'Q': printf("程序退出\n");return 0;
        }

        /**************** 計時操作 ****************/
        time(&time_sec);              //獲取秒數(shù)保存到time_t變量
        if(pause_flag == 0 && old_sec != time_sec)
        {
            old_sec = time_sec;       //更新舊的秒數(shù)
            if(sec > 0)
                sec--;                //計時秒數(shù)減1
            else
            {
                sec = 59;             //如果原秒數(shù)為0,則變?yōu)?9
                if(min > 0)
                    min--;            //計時分鐘減1
                else
                {
                    min = 59;         //如果分鐘數(shù)為0,則變?yōu)?9
                    hour--;           //計時小時數(shù)減1
                }
            }
            printf("倒計時——%02d:%02d:%02d\r", hour, min, sec);

            if(!hour && !min && !sec) //計時結(jié)束
                menu_flag = 1;        //打印菜單
        }
    }
    return 0;
}

運行效果

請?zhí)砑訄D片描述

到此這篇關(guān)于C語言小項目——計時器(倒計時+報警提示)的文章就介紹到這了,更多相關(guān)C語言倒計時計時器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言文字藝術(shù)之?dāng)?shù)據(jù)輸入輸出

    C語言文字藝術(shù)之?dāng)?shù)據(jù)輸入輸出

    這篇文章主要介紹了C語言文字藝術(shù)之?dāng)?shù)據(jù)輸入輸出,C語言的語句用來向計算機系統(tǒng)發(fā)出操作指令。一條語句編寫完成經(jīng)過編譯后產(chǎn)生若干條機器指
    2022-07-07
  • C語言手把手教你實現(xiàn)貪吃蛇AI(中)

    C語言手把手教你實現(xiàn)貪吃蛇AI(中)

    這篇文章主要為大家詳細介紹了C語言手把手教你實現(xiàn)貪吃蛇AI的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Qt Design Studio安裝圖文教程

    Qt Design Studio安裝圖文教程

    本文主要介紹了Qt Design Studio安裝圖文教程,文中通過圖文介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 解析C++編程中的繼承方面的運用

    解析C++編程中的繼承方面的運用

    這篇文章主要介紹了解析C++編程中的繼承方面的運用,是C++入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-09-09
  • C++成員函數(shù)中const的使用詳解

    C++成員函數(shù)中const的使用詳解

    這篇文章主要為大家詳細介紹了C++成員函數(shù)中const的使用,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • C++深入講解類與對象之OOP面向?qū)ο缶幊膛c封裝

    C++深入講解類與對象之OOP面向?qū)ο缶幊膛c封裝

    學(xué)習(xí)過C語言的小伙伴知道:C語言是面向過程的,關(guān)注的是過程,分析出求解問題的步驟,通過函數(shù)調(diào)用逐步解決問題,接下來讓我們詳細的了解
    2022-05-05
  • C++設(shè)計模式之策略模式

    C++設(shè)計模式之策略模式

    這篇文章主要介紹了C++設(shè)計模式之策略模式,本文講解了什么是策略模式、策略模式的使用場合、策略模式的代碼實例等內(nèi)容,需要的朋友可以參考下
    2014-10-10
  • C++設(shè)計模式之命令模式

    C++設(shè)計模式之命令模式

    這篇文章主要介紹了C++設(shè)計模式之命令模式,本文講解了什么是命令模式、命令模式的使用場合等內(nèi)容,并給出了一個代碼實例,需要的朋友可以參考下
    2014-10-10
  • 基于C語言實現(xiàn)三子棋游戲的示例代碼

    基于C語言實現(xiàn)三子棋游戲的示例代碼

    這篇文章主要為大家詳細介紹了如何利用C語言數(shù)組實現(xiàn)簡單的三子棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • 基于typedef的用法詳解

    基于typedef的用法詳解

    本篇文章是對typedef的用法進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05

最新評論