中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用C語言實現計時器

發布時間:2021-11-18 10:44:37 來源:億速云 閱讀:2617 作者:iii 欄目:開發技術

本篇內容主要講解“怎么使用C語言實現計時器”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么使用C語言實現計時器”吧!

實現思路

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

  • 極簡版:簡單的單次倒計時,只能設置秒數,計時通過Sleep()函數實現(粗略倒計時),先輸入秒數cnt,然后每過1秒(Sleep(1000),cnt減1,直到cnt變成0,就退出程序。

  • 普通版:可設置計時的hour,min,sec),計時通過time()函數實現(用來獲取當前系統時間的秒數),進入while循環,判斷系統時間秒數是否變化,如有變化,說明過了1秒。這時將秒數sec減1,當sec減到0,下一秒就將分鐘min減1,同時sec變為59。分鐘min和小時hour的變化關系與秒和分鐘的關系類似。一直循環倒計時,直到hour,minsec都變為0,此時計時結束,進行報警提示printf(\a'))。

  • 高級版:在普通版的基礎上,增加重復計時暫停計時的功能。首先需要設定計時時間,然后按下空格鍵開始計時,再次按下空格鍵,可以暫停倒計時,同時設置的倒計時時間具有記憶功能,即計時結束后,再次按下空格,依然按照上次設定的計時時間進行計時。

 1.極簡版本

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

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

運行效果

怎么使用C語言實現計時器

2.普通版本

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

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

運行效果

怎么使用C語言實現計時器

3.高級版本

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

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

int main(void)
{
    //動態計時參數(打印值)
    unsigned int hour = 0, min = 0, sec = 0;
    //默認值(設定的計時參數)
    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系統清屏命令
            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未設置計時時間\t\t|\n");
            printf("| S:設置 空格:開始/暫停 Q:退出 |\n");
            printf("================================\n");
            if(pause_flag == 0)
            {
                printf("計時結束\n");
                for(int i = 0; i < 5; i++)
                {
                    printf("\a");             //響蜂鳴器(或系統提示音)
                    sleep(1);                 //延時1秒,太短電腦不發出聲音
                }
                pause_flag = 1;          //停止計時

            }
        }

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

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

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

運行效果

怎么使用C語言實現計時器

到此,相信大家對“怎么使用C語言實現計時器”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

呼伦贝尔市| 嘉定区| 新沂市| 镇远县| 时尚| 大港区| 静宁县| 商水县| 台安县| 安国市| 广灵县| 西和县| 丰县| 株洲市| 博白县| 长海县| 鄱阳县| 徐闻县| 平遥县| 涿鹿县| 彝良县| 城口县| 汤原县| 含山县| 丹阳市| 邵东县| 利辛县| 东光县| 商丘市| 平泉县| 湛江市| 洛南县| 孙吴县| 北碚区| 阿克陶县| 重庆市| 什邡市| 昌江| 金寨县| 绥芬河市| 丰顺县|