既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上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); //初始版本--存在BUG,见评论区
printf("%-4d\r", cnt); //最大9999秒,
//如果要更高,把4加大即可
//-4表示左对齐,宽度固定为4字节
//cnt--; //“cnt减1”放到while循环中(根据评论区建议进行优化)
}
printf("计时结束\n");
return 0;
}
运行效果
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;
}
运行效果
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"); //菜单


**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化的资料的朋友,可以添加戳这里获取](https://bbs.csdn.net/topics/618668825)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化的资料的朋友,可以添加戳这里获取](https://bbs.csdn.net/topics/618668825)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**