最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語(yǔ)言小項(xiàng)目計(jì)時(shí)器的實(shí)現(xiàn)思路(倒計(jì)時(shí)+報(bào)警提示)

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

大家對(duì)計(jì)時(shí)器應(yīng)該不陌生,我們?cè)谥贫ㄒ粋€(gè)計(jì)劃時(shí),經(jīng)常喜歡設(shè)置一個(gè)倒計(jì)時(shí)來(lái)規(guī)定完成時(shí)限,等到計(jì)時(shí)結(jié)束,它還會(huì)報(bào)警提示,今天,我就用C語(yǔ)言編寫一個(gè)簡(jiǎn)易的倒計(jì)時(shí)計(jì)時(shí)器。

實(shí)現(xiàn)思路

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

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

 1.極簡(jiǎn)版本

極簡(jiǎn)版代碼很簡(jiǎn)單,就不多作介紹了。

#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("計(jì)時(shí)結(jié)束\n");
    return 0;
}

運(yùn)行效果

請(qǐng)?zhí)砑訄D片描述

2.普通版本

普通版本也很簡(jiǎn)單,主要包括:

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

運(yùn)行效果

請(qǐng)?zhí)砑訄D片描述

3.高級(jí)版本

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

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

int main(void)
{
    //動(dòng)態(tài)計(jì)時(shí)參數(shù)(打印值)
    unsigned int hour = 0, min = 0, sec = 0;
    //默認(rèn)值(設(shè)定的計(jì)時(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倒計(jì)時(shí)時(shí)間:%02d:%02d:%02d\t |\n",\
                       hour_def, min_def, sec_def);
            else
                printf("|\t未設(shè)置計(jì)時(shí)時(shí)間\t\t|\n");
            printf("| S:設(shè)置 空格:開(kāi)始/暫停 Q:退出 |\n");
            printf("================================\n");
            if(pause_flag == 0)
            {
                printf("計(jì)時(shí)結(jié)束\n");
                for(int i = 0; i < 5; i++)
                {
                    printf("\a");             //響蜂鳴器(或系統(tǒng)提示音)
                    sleep(1);                 //延時(shí)1秒,太短電腦不發(fā)出聲音
                }
                pause_flag = 1;          //停止計(jì)時(shí)

            }
        }

        /**************** 鍵盤按鍵掃描+操作 ****************/
        key = 0;
        if(_kbhit())                      //檢測(cè)到按鍵按下
            key = getch();                //讀取按鍵
        switch(key)
        {
            case 's':                     //按s/S設(shè)置計(jì)時(shí)時(shí)間
            case 'S':
                printf("請(qǐng)?jiān)O(shè)置計(jì)時(shí)時(shí)間——時(shí) 分 秒\n");
                scanf("%d %d %d", &hour_def, &min_def, &sec_def);
                if(hour_def > 24 || min_def > 59 || sec_def > 59)
                {
                    //printf("時(shí)間設(shè)置失敗\n");
                    hour_def = min_def = sec_def = 0; //重置時(shí)間
                }
                hour = min = sec = 0;       //計(jì)時(shí)值清零
                menu_flag = 1;              //打印菜單
                break;
            case ' ':                       //按空格鍵開(kāi)始/暫停計(jì)時(shí)
                if(hour_def || min_def || sec_def)   //如果時(shí)間有效
                {
                    if(pause_flag)
                    {
                        pause_flag = 0;     //開(kāi)始計(jì)時(shí)或繼續(xù)計(jì)時(shí)
                        if(!hour && !min && !sec) //計(jì)數(shù)值為0
                        {
                            hour = hour_def;   //讀取上次設(shè)置的時(shí)間
                            min = min_def;
                            sec = sec_def;
                            //打印初始時(shí)間
                            printf("倒計(jì)時(shí)——%02d:%02d:%02d\r",\
                                   hour, min, sec);
                        }
                    }
                    else
                        pause_flag = 1;     //暫停計(jì)時(shí)
                    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;
        }

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

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

運(yùn)行效果

請(qǐng)?zhí)砑訄D片描述

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

相關(guān)文章

  • OpenCV+Qt實(shí)現(xiàn)圖像處理操作工具的示例代碼

    OpenCV+Qt實(shí)現(xiàn)圖像處理操作工具的示例代碼

    這篇文章主要介紹了利用OpenCV+Qt實(shí)現(xiàn)圖像處理操作工具,可以實(shí)現(xiàn)雪花屏、高斯模糊、中值濾波、毛玻璃等操作,感興趣的可以了解一下
    2022-08-08
  • 結(jié)構(gòu)體對(duì)齊的規(guī)則詳解及C++代碼驗(yàn)證

    結(jié)構(gòu)體對(duì)齊的規(guī)則詳解及C++代碼驗(yàn)證

    在c語(yǔ)言的結(jié)構(gòu)體里面一般會(huì)按照某種規(guī)則去進(jìn)行字節(jié)對(duì)齊。本文就來(lái)介紹一下如何實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解下
    2021-08-08
  • 詳解C/C++中的select、poll和epoll

    詳解C/C++中的select、poll和epoll

    本文通過(guò)示例介紹了C/C++中的select、poll和epoll知識(shí),結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2023-06-06
  • C++?Qt開(kāi)發(fā)之使用QNetworkAccessManager實(shí)現(xiàn)Web網(wǎng)頁(yè)訪問(wèn)

    C++?Qt開(kāi)發(fā)之使用QNetworkAccessManager實(shí)現(xiàn)Web網(wǎng)頁(yè)訪問(wèn)

    Qt?是一個(gè)跨平臺(tái)C++圖形界面開(kāi)發(fā)庫(kù),利用Qt可以快速開(kāi)發(fā)跨平臺(tái)窗體應(yīng)用程序,本文主要介紹了如何運(yùn)用QNetworkAccessManager組件實(shí)現(xiàn)Web網(wǎng)頁(yè)訪問(wèn),需要的可以參考下
    2024-03-03
  • c++ 類函數(shù)作為模板參數(shù)實(shí)現(xiàn)方式詳解

    c++ 類函數(shù)作為模板參數(shù)實(shí)現(xiàn)方式詳解

    這篇文章主要介紹了c++ 類函數(shù)作為模板參數(shù)實(shí)現(xiàn)方式,在實(shí)現(xiàn)中加入增強(qiáng)邏輯,這種方式對(duì)代碼侵入性過(guò)高,而且無(wú)法控制該邏輯是否需要,如果不需要的話又得重新修改代碼實(shí)現(xiàn),需要的朋友可以參考下
    2023-03-03
  • C++ Dijkstra算法之求圖中任意兩頂點(diǎn)的最短路徑

    C++ Dijkstra算法之求圖中任意兩頂點(diǎn)的最短路徑

    這篇文章主要為大家詳細(xì)介紹了用C++經(jīng)典算法-Dijkstra算法求任意兩頂點(diǎn)之間的最短路徑,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • C++中的覆蓋和隱藏詳解

    C++中的覆蓋和隱藏詳解

    這篇文章主要介紹了C++中重載、重寫(覆蓋)和隱藏的區(qū)別,是C++面向?qū)ο蟪绦蛟O(shè)計(jì)非常重要的概念,需要的朋友可以參考下,希望能夠給你帶來(lái)幫助
    2021-08-08
  • Qt項(xiàng)目實(shí)戰(zhàn)之實(shí)現(xiàn)MP3音樂(lè)播放器

    Qt項(xiàng)目實(shí)戰(zhàn)之實(shí)現(xiàn)MP3音樂(lè)播放器

    這篇文章主要為大家詳細(xì)介紹了如何利用Qt實(shí)現(xiàn)MP3音樂(lè)播放器,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴可以了解一下
    2023-03-03
  • C語(yǔ)言中數(shù)組的使用詳解

    C語(yǔ)言中數(shù)組的使用詳解

    這篇文章主要為大家介紹了C語(yǔ)言中數(shù)組的使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-12-12
  • va_list(),va_start(),va_arg(),va_end() 詳細(xì)解析

    va_list(),va_start(),va_arg(),va_end() 詳細(xì)解析

    這些宏定義在stdarg.h中,所以用到可變參數(shù)的程序應(yīng)該包含這個(gè)頭文件.下面我們寫一個(gè)簡(jiǎn)單的可變參數(shù)的函數(shù),該函數(shù)至少有一個(gè)整數(shù)參數(shù),第二個(gè)參數(shù)也是整數(shù),是可選的.函數(shù)只是打印這兩個(gè)參數(shù)的值
    2013-09-09

最新評(píng)論

民勤县| 定结县| 香河县| 永寿县| 珲春市| 资中县| 高州市| 古丈县| 都匀市| 儋州市| 郯城县| 长子县| 延庆县| 年辖:市辖区| 肇源县| 泾源县| 梅州市| 阜宁县| 五寨县| 仙桃市| 峨山| 钟山县| 墨江| 固镇县| 承德县| 武夷山市| 桦南县| 平原县| 罗城| 石狮市| 南木林县| 高密市| 威信县| 西贡区| 辽源市| 安远县| 怀化市| 三门峡市| 凌云县| 红原县| 临湘市|