计时器(倒计时+报警提示)V3-C语言

//计时器(倒计时+报警提示)V3
#include <stdio.h>
#include <time.h>
#include <Windows.h>
#include <conio.h>  
//时间结构体 
struct Time{
	int hour;
	int min;
	int sec;
};
//暂停  退出  参数 
struct Parameter{
	int key_pause;
	char key;
	int key_out;
	int key_meau;
};
struct Time ti_me = {0, 0, 0};
struct Parameter par = {1, 'N', 0, 1};
void key_check(struct Parameter *par);
int main()
{
	time_t start_time = 0, end_time = 0;

	while(1)
	{
		key_check(&par);
        if(par.key_out)
        	return 0;
		if(par.key_meau)
		{
			par.key_meau = 0;
			system("cls");          //Windows系统清屏命令
			printf("================================\n"); //菜单
		    if(ti_me.hour || ti_me.min || ti_me.sec)
		        printf("|\t倒计时时间:%02d:%02d:%02d\t|\n", ti_me.hour, ti_me.min, ti_me.sec);
		    else
		        printf("|\t未设置计时时间\t\t|\n"); 
		    printf("| S:设置  空格:开始/暂停  Q:退出|\n");
		    printf("================================\n");
		    if(par.key == 'H')
		    	printf("已设置时间--按空格开始计时!\r");
		} 
		
		while(par.key_pause == 0 && (ti_me.hour > 0 || ti_me.min > 0 || ti_me.sec > 0))
		{
			if(ti_me.sec > 0)
			{
				ti_me.sec--;
			}
			else if(ti_me.min > 0)
			{
				ti_me.min--;
				ti_me.sec = 59;
			}
			else
			{
				if(ti_me.hour > 0)
				{
					ti_me.hour--;
					ti_me.min = 59;
					ti_me.sec = 59;
				}
				else
				{
					ti_me.hour = 0;
					ti_me.min = 0;
					ti_me.sec = 0;
				}
			}
			time(&start_time);
			do
			{
				time(&end_time);
			}while(end_time - start_time < 1);
			printf("倒计时--%2d时-%2d分-%2d秒    正在计时\r",ti_me.hour, ti_me.min, ti_me.sec);
			key_check(&par);
			if((par.key_out == 1) || (ti_me.hour == 0 && ti_me.min == 0 && ti_me.sec == 0))
			{
				printf("倒计时--%2d时-%2d分-%2d秒    计时结束\r",ti_me.hour, ti_me.min, ti_me.sec);
				printf("\n退出程序!!\r");
				return 0;
			}	
		}
		if(par.key == 'T')
			printf("倒计时--%2d时-%2d分-%2d秒    已暂停计时\r",ti_me.hour, ti_me.min, ti_me.sec);
	}
	return 0; 
} 

void key_check(struct Parameter *par)
{
	if(_kbhit())                      //检测到按键按下
        par->key = getch();                //读取按键
	    switch(par->key)
	    {
	    	case ' ':
	    		if(ti_me.hour == 0 && ti_me.min == 0 && ti_me.sec == 0)
	    		{
	    			printf("请先设置时间\r");
				}
				else
				{
					par->key_pause = !par->key_pause;
					par->key = 'T';
				}
				break;
			case 's':
			case 'S':
				if(par->key_pause == 1)
				{
					printf("请输入:时-分-秒        \n");
					scanf("%d-%d-%d", &ti_me.hour, &ti_me.min, &ti_me.sec);
					par->key_meau = 1;
					par->key = 'H';
				}
				else
				{
					printf("暂停才能设置时间!!!\r");
					par->key = 'N';
				}
				break;
			case 'q':
			case 'Q':
				par->key_out = 1;
				break;
	    }
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

脆订壳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值