用C语言做秒表,延迟,循环,停止的问题,求教!
我想用C语言做一个循环的600秒倒计时,不知道一秒的延迟时间怎么实现,,还有循环怎么停止个人写的程序是用计算时间作为延迟时间的,求指教,怎么做一个精准的倒计时
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
#include "windows.h"
void delay()
{
int m;
for(m=1;m<=511280000;m++);
}
void display(int t)
{
system("cls");
printf("%ld",t);
}
void main()
{
int i,t=600;char a,b;
printf("请输入B开始倒计时");
scanf("%c",&a);
if(a=='B')
{
for(i=1;i<=600;i++)
{
delay();
t--;
display(t);
}
}
else
printf("只有B能开始计时");
}
[解决办法]
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
#include "windows.h"
void display(int t)
{
//system("cls");
//printf("%ld",t);//没有用long干吗用%ld??
printf("/r%d",t);
}
void main()
{
DWORD dwStart, dwCmp;
int i,t=600, tOld = 0;
char a,b;
printf("请输入B开始倒计时");
scanf("%c",&a);
if(a=='B')
{
::timeBeginPeriod(1);//尽量提高定时精度。不作要求的话这一行可以不要
dwStart = GetTickCount();
for(;;)
{
dwCmp = GetTickCount() - dwStart;//这一行不要乱改,因为新的返回值溢出后仍然继续计时,但是值可能比当前的dwStart更小。
if(dwCmp > 600000)
break;
Sleep(1);//想想看,为什么不直接用Sleep延时。
t = dwCmp / 1000;
if(tOld != t)
{
display(t);
tOld = t;
}
}
::timeEndPeriod(1);//计时完成后恢复到系统默认状态。
// for(i=1;i<=600;i++)
// {
//sleep(1000);
// t--;
//display(t);
// }
}
else
printf("只有B能开始计时");
}