激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

香港云服务器
服務器之家 - 編程語言 - C/C++ - C語言小項目計時器的實現思路(倒計時+報警提示)

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

2022-02-25 14:50小輝_Super C/C++

這篇文章主要介紹了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,min和sec都變為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_flag和menu_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語言小項目——計時器(倒計時+報警提示)的文章就介紹到這了,更多相關C語言倒計時計時器內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/weixin_43772810/article/details/121347301

延伸 · 閱讀

精彩推薦
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內存中的數據都是暫時的,當程序結束時,它們都將丟失,為了永久性的保存大量的數據,C語言提供了對文件的操作,這篇文章主要給大家介紹了關于C語言中文件...

    針眼_6702022-01-24
  • C/C++學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
  • C/C++C/C++經典實例之模擬計算器示例代碼

    C/C++經典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關于C/C++經典實例之模擬計算器的相關資料,文中通過示...

    jia150610152021-06-07
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數使用

    詳解c語言中的 strcpy和strncpy字符串函數使用

    strcpy 和strcnpy函數是字符串復制函數。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...

    青山的青6062022-01-04
  • C/C++深入理解goto語句的替代實現方式分析

    深入理解goto語句的替代實現方式分析

    本篇文章是對goto語句的替代實現方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網7342020-12-03
  • C/C++C語言實現電腦關機程序

    C語言實現電腦關機程序

    這篇文章主要為大家詳細介紹了C語言實現電腦關機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
  • C/C++c++ 單線程實現同時監聽多個端口

    c++ 單線程實現同時監聽多個端口

    這篇文章主要介紹了c++ 單線程實現同時監聽多個端口的方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
890
主站蜘蛛池模板: 亚洲成人第一区 | 91av大片| 97香蕉超级碰碰久久免费软件 | 欧美a∨一区二区三区久久黄 | 悠悠成人资源亚洲一区二区 | 色欲香天天天综合网站 | 草莓福利社区在线 | 9丨九色丨国产 | sese综合| 99在线在线视频免费视频观看 | 欧美精品成人一区二区在线观看 | 中文字幕综合 | 久久夜夜视频 | 日韩毛片免费观看 | 久久久久久久九九九九 | 欧美日韩亚洲视频 | 黄色a级片视频 | 日韩欧美电影一区二区三区 | 久久久久久中文字幕 | 看黄在线观看 | 成人性视频欧美一区二区三区 | 欧美性受xxxx白人性爽 | 国产精品久久久久久久久久三级 | 羞羞答答影院 | 亚洲午夜1000理论片aa | 久久久日韩精品一区二区三区 | 久草免费资源视频 | 特大黑人videos与另类娇小 | 亚洲自拍第一 | 黄色av网站免费 | 久久久婷婷一区二区三区不卡 | 黄色免费影片 | 精品一区二区三区日本 | 久久久资源网 | 91av在线国产 | 久久精品国产精品亚洲 | 国产精品一品二区三区四区18 | 黄污在线看 | 成人毛片在线免费观看 | 91精品一区二区综合在线 | 亚洲欧美日韩久久精品第一区 |