编写时钟程序以实现以下功能: a)按任意键启动计时器; b)按“S”键启动计时器,按“E”键停止计时器或时间为00:00:00。
这是我到目前为止所拥有的
#include <stdio.h>
#include <windows.h>
#include <conio.h>
main()
{
long int t;
int flag =0;
t = 86400;
printf("press S start, press E stop\n");
while(1)
{
if (kbhit()== 'S' || kbhit() == 's')
flag =1;
if (getch() == 'E' || getch() == 'e')
{ flag =0;
continue;
}
if(t <= 0)
break;
if(flag == 1)
{
t=t-1;
Sleep(1000);
printf("%d ",t);
}
}
}
好吧,我真的不知道如何实现控制功能。如何按'E'让计时器停止,按'S'再次运行计时器。
我是初学者,无法一遍又一遍地获得正确的课程。我希望你能帮助我。谢谢!
答案 0 :(得分:1)
您正在调用kbhit()
两次,每个循环只需要调用一次。它不会返回char
您正在调用getch()
两次,每个循环只需要一次。
你应该改进flag
的含义。也许改为StoppedFlag
。
while (1) {
if (kbhit()) {
char ch = getch();
if ((ch == 'S') || (ch == 's')) {
flag = 0;
}
else if ((ch == 'E') || (ch == 'e')) {
flag = 1;
}
}
else {
if(t <= 0) {
break;
}
if (flag == 0) {
t=t-1;
Sleep(1000);
printf("%ld ", t);
}
}
}