成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

C語言小項目——計時器(倒計時+報警提示)

Lin_YT / 1928人閱讀

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

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

實現(xiàn)思路

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

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

1.極簡版本

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

#include #include      //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;}

運行效果

2.普通版本

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

  1. 設(shè)置計時時間
  2. 倒計時
  3. 蜂鳴器報警(系統(tǒng)提示音)
#include #include 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);              //獲取當前秒數(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;}

運行效果

3.高級版本

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

#include #include #include                  //kbhit()/_kbhit(),getch()#include                //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;            //暫停標志    int menu_flag = 1;             //菜單打印標志    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);        //獲取當前秒數(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;}

運行效果

文章到這里就結(jié)束了,如果你有更好的方案,歡迎分享?,如果我程序有任何問題,可以評論或私聊我,一起學(xué)習(xí),一起進步?。?!

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/123617.html

相關(guān)文章

  • 基于C-V2X的闖紅燈預(yù)警方法與流程

    摘要:其中判斷信號燈的和車輛的位置關(guān)系可以通過,車輛的航向角信息,以及車輛的經(jīng)緯度信息,目標點的經(jīng)緯度信息,進行計算和處理后可以獲取目標點和車輛的相對位置。 首先簡單說明一下闖紅燈預(yù)警算法流程圖,總共分為7步如下圖所示: 背景技術(shù): 本算法主要是基于V2X通信技術(shù),在道路交通中,車輛與車輛之間,...

    RobinQu 評論0 收藏0
  • 如何用基于WebGL架構(gòu)的3D可視化平臺搭建-設(shè)備管理系統(tǒng)

    摘要:下面我們將用平臺來模擬一個設(shè)備管理系統(tǒng)。查看是否創(chuàng)建了定時器第三步,創(chuàng)建攝像機面板,煙感報警面板以及控制設(shè)備的開關(guān),這里簡單調(diào)整一下面板位置之后會增加兩個創(chuàng)建設(shè)備的按鈕。創(chuàng)建對象數(shù)組,以及數(shù)組標識第五步,為每個設(shè)備對應(yīng)的創(chuàng)建控制開關(guān)。 國內(nèi)高層建筑不斷興建,它的特點是高度高、層數(shù)多、體量大。面積可達幾萬平方米到幾十萬平方米。這些建筑都是一個個龐然大物,高高的聳立在地面上,這是它的外觀,...

    jiekechoo 評論0 收藏0
  • Javascript調(diào)試命令——你只會Console.log() ?

    摘要:調(diào)試命令你只會對象提供對瀏覽器控制臺的接入如的。分類輸出不同類別信息的輸出文字信息提示信息警告信息錯誤信息分組輸出使用和包裹分組內(nèi)容。中的參數(shù)作為計時器的標識,具有唯一性。應(yīng)該需要其他的調(diào)試工具。 Javascript調(diào)試命令——你只會Console.log() ? Console 對象提供對瀏覽器控制臺的接入(如:Firefox 的 Web Console)。不同瀏覽器上它的工作方式...

    Ocean 評論0 收藏0
  • Python 中的 10 個常見安全漏洞,以及如何避免(上)

    摘要:在考慮安全性時,你需要考慮如何避免被濫用,也不例外,即使在標準庫中,也存在用于編寫應(yīng)用的不良實踐。計時攻擊需要精確性,所以通常不能用于高延遲的遠程網(wǎng)絡(luò)。由于大多數(shù)應(yīng)用程序涉及可變延遲,因此幾乎不可能在服務(wù)器上編寫計時攻擊。 簡評:編寫安全代碼很困難,當你學(xué)習(xí)一個編程語言、模塊或框架時,你會學(xué)習(xí)其使用方法。 在考慮安全性時,你需要考慮如何避免被濫用,Python 也不例外,即使在標準庫中...

    Kaede 評論0 收藏0
  • Python 中的 10 個常見安全漏洞,以及如何避免(上)

    摘要:在考慮安全性時,你需要考慮如何避免被濫用,也不例外,即使在標準庫中,也存在用于編寫應(yīng)用的不良實踐。計時攻擊需要精確性,所以通常不能用于高延遲的遠程網(wǎng)絡(luò)。由于大多數(shù)應(yīng)用程序涉及可變延遲,因此幾乎不可能在服務(wù)器上編寫計時攻擊。 簡評:編寫安全代碼很困難,當你學(xué)習(xí)一個編程語言、模塊或框架時,你會學(xué)習(xí)其使用方法。 在考慮安全性時,你需要考慮如何避免被濫用,Python 也不例外,即使在標準庫中...

    Jingbin_ 評論0 收藏0

發(fā)表評論

0條評論

Lin_YT

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<