千家信息网

怎么使用C语言实现计时器

发表于:2025-02-16 作者:千家信息网编辑
千家信息网最后更新 2025年02月16日,本篇内容主要讲解"怎么使用C语言实现计时器",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么使用C语言实现计时器"吧!实现思路简单介绍一下我的实现思路:本
千家信息网最后更新 2025年02月16日怎么使用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,minsec都变为0,此时计时结束,进行报警提示printf(\a'))。

  • 高级版:在普通版的基础上,增加重复计时暂停计时的功能。首先需要设定计时时间,然后按下空格键开始计时,再次按下空格键,可以暂停倒计时,同时设置的倒计时时间具有记忆功能,即计时结束后,再次按下空格,依然按照上次设定的计时时间进行计时。

1.极简版本

极简版代码很简单,就不多作介绍了。

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

运行效果

2.普通版本

普通版本也很简单,主要包括:

设置计时时间倒计时蜂鸣器报警(系统提示音)
#include #include 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("倒计时--d:d:d\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("倒计时--d:d:d\r", hour, min, sec);        }    }    for(int i = 0; i < 5; i++)    {        printf("\a");             //响蜂鸣器(或系统提示音)        sleep(1);                 //延时1秒,太短电脑不发出声音    }    puts("\n计时结束\n");    return 0;}

运行效果

3.高级版本

在普通版本的基础上添加了菜单打印键盘按键扫描两部分代码。
程序的核心为 pause_flagmenu_flag这两个标志,前者控制倒计时的开始暂停继续,后者控制菜单是否需要刷新(只有程序第一次运行设置计时时间计时结束时才需要打印菜单)。

#include #include #include                  //kbhit()/_kbhit(),getch()#include                //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倒计时时间:d:d:d\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("倒计时--d:d:d\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("倒计时--d:d:d\r", hour, min, sec);            if(!hour && !min && !sec) //计时结束                menu_flag = 1;        //打印菜单        }    }    return 0;}

运行效果

到此,相信大家对"怎么使用C语言实现计时器"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

时间 倒计时 菜单 普通 版本 空格 系统 程序 更新 运行 计时器 语言 高级 小时 效果 标志 空格键 变化 提示 代码 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库连接满会出现什么情况 gps时钟同步服务器设置 linux创建数据库并编码 sqlite数据库恢复 唐山手机应用软件开发 网络安全怎么防论文 猎豹移动网络安全报告 服务器更换硬盘内部运作情况 数据库查询传输带宽 荆州订制软件开发企业 网络安全保费 微信小程序云函数导出数据库 网络安全应具有什么特征 郸城市网络安全教育 网络安全做得最好的公司 刚玩过的服务器找不到了怎么办 菏泽智慧养老软件开发 支持阿根廷部署服务器 中国工商银行软件开发中心合肥 关于长三角区域公安机关网络安全 护苗网络安全课 宣传活动 四川椰子网络技术有限公司 采用什么规格的esg数据库 明皮皮计算机软件开发有限公司 数据库测评属于哪个安全层面 怎么保存mysql数据库 沈阳直销软件开发价格 手机网站数据库设计 能用阿里云服务器制作影像吗 石景山区综合软件开发服务保障
0