用c语言模拟一个数字时钟,要求延时一秒运行

用到sleep函数

1、用sleep延时刷新并获取系统时间来显示。

2、例程:

#include<graphics.h> 
#include<math.h> 
#include<dos.h> 
#define PI 3.1415926 
//屏幕中心的坐标(640X480模式下)
#define mid_x 320 
#define mid_y 240 
int main() 
{ int graphdriver=DETECT,graphmode; 
int end_x,end_y; 
struct time curtime; 
float th_hour,th_min,th_sec; 
initgraph(&graphdriver,&graphmode,"C:\\TC2"); //初始化VGA屏幕模式
setbkcolor(BLACK); //使用黑色的背景色
while(!kbhit(0)) //若有键盘输入,则跳出,即是结束程序
{ setcolor(GREEN); //把画笔设为绿色
circle(mid_x,mid_y,180); //钟的外圆
circle(mid_x,mid_y,150); //钟的内圆
circle(mid_x,mid_y,1); //画出钟的圆心
gettime(&curtime); //取得系统当前时间
th_sec=(float)curtime.ti_sec*0.1047197551; //把秒针的角度化为弧度,为以后绘制时方便,下同
th_min=(float)curtime.ti_min*0.1047197551+th_sec/60.0; //分针的弧度
th_hour=(float)curtime.ti_hour*0.5235987755+th_min/12.0; //时度的弧度,注意整时是12等分的,所时乘的是3.14/180*5
//计算出时针的尾的坐标(时针长70)
end_x=mid_x+70*sin(th_hour); 
end_y=mid_y-70*cos(th_hour); 
setcolor(RED); 
line(mid_x,mid_y,end_x,end_y); //用红色线画出时针
//计算出分针坐标(分针长110)
end_x=mid_x+110*sin(th_min); 
end_y=mid_y-110*cos(th_min); 
setcolor(RED); 
line(mid_x,mid_y,end_x,end_y); //用红色画出分针
end_x=mid_x+140*sin(th_sec); 
end_y=mid_y-140*cos(th_sec); 
setcolor(RED); 
line(mid_x,mid_y,end_x,end_y); //同上,画出秒针,长为140
//画出钟盘上的刻度,刻度长20
line(140,240,160,240); //9点对应的大刻度
line(320,60,320,80); //12点对应的大刻度
line(500,240,480,240); //3点的刻度
line(320,420,320,400); //6点的刻度
line(410,395.7,400,378.4); //5点
line(475.7,330,458.4,320); //4点
line(475.7,150,458.4,160); //2点
line(410,84.3,400,101.6); //1点
line(230,84.3,240,101.6); //11点
line(164.3,150,181.6,160); //10点
line(164.3,330,181.6,320); //8点
line(230,395.7,240,378.4); //7点
sleep(BLUE); //这里应该是打错,停止一秒,应为sleep(1000)
cleardevice(); //清除屏幕上的显示

closegraph(); //关闭VGA屏幕,即返回文本方式
return 0; 
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-07-21
如果你要按楼上那种用sleep的方法模拟时钟的话,误差很大的,你可以实时对照着系统时间可以下就知道了,超过两分钟时间误差差3-4秒不成问题,如果你对时间准确性不要求的话,只是仅仅模拟的话那倒还凑合用!否则那你必须这样做:用sleep延时刷新并获取系统时间来显示

#include <afx.h>
#include <stdio.h>

int main()
{

while(true)
{
CTime ti=CTime::GetCurrentTime();
CString s_time;
s_time = ti.Format("%H:%M:%S");
printf("%s",s_time);
Sleep(500);
system("cls");

}
return 0;
}追问

最好用display函数,update函数和delay函数,您能帮下忙吗?

本回答被网友采纳
第2个回答  2013-07-21

你没说具体要求,就只简单的实现了下大概功能,测试了下1分钟没问题,1小时时间太长没看,应该没问题;

#include<stdio.h>
#include<windows.h>
#include<stdlib.h>
int main()
{
int a=0,b=0,c=0;
while(true)
{
printf("%02d:%02d:%02d",a,b,c);
c++;
Sleep(1000);
system("cls");
if(c==60)
{
b++;
c=0;
if(b==60)
{
a++;
b=0;
c=0;
if(a==24)
{
a=0;
b=0;
c=0;
}
}
}

}
return 0;
}

追问

这是我们的一道练习题,没有什么要求,模拟出来就可以,老师给了我们一些提示,用display函数,update函数和delay函数,您能帮下忙吗?

第3个回答  2019-02-23
#include <stdio.h>
#include <stdlib.h>
int hour, minute, second;
void update()
{
second++;
if(second ==60)
{
second =0;
minute++;
}
if(minute ==60)
{
minute =0;
hour++;
}
if(hour ==24)
{
hour =0;
}
}
void display()
{
printf("%2d ;%2d; %2d\r",hour,minute,second);
}
void delay()
{
int t;
for(t=0;t<100000000;t++);
}
int main()
{
int i;
for(i=0;i<100000;i++)
{
update();
display();
delay();
}
return 0;
}
这个完全符合要求

用c语言模拟一个数字时钟,要求延时一秒运行
kbhit(0)) \/\/若有键盘输入,则跳出,即是结束程序{ setcolor(GREEN); \/\/把画笔设为绿色circle(mid_x,mid_y,180); \/\/钟的外圆circle(mid_x,mid_y,150); \/\/钟的内圆circle(mid_x,mid_y,

用c语言模拟一个数字时钟,要求延时一秒运行
运用sleep函数时,头文件要包含"windows.h"还有就是sleep()内包含的数字是以ms为单位

用c语言编一个时钟程序实现时分秒计时功能
int main(){ time_t t1,t2;struct tm *ptm;char timestr[128]={'\\0'};time(&t1);while(1){ time(&t2);if(difftime(t2,t1)>=1){ system("cls");ptm=localtime(&t2);strftime(timestr,128,"%H:%M:%S",ptm);printf("%s\\n",timestr);t1=t2;} } system("PAUSE");return 0...

c语言 时钟模拟
delay(70); \/\/延时0.07秒,即是声音延续0.07秒 nosound(); \/\/停止声音 sleep(1); \/\/停止一秒 cleardevice(); \/\/清屏 } }

用C语言做数字时钟每走一秒响一次,求大神告诉源代码
数字时钟的实现很简单,运用time.h相关函数即可 include<stdio.h>#include<stdlib.h>#includetime_t oldt=-1;struct tm *p;bool Printdate(){time_t t=time(NULL);if(t!=oldt){oldt=t;p=localtime(&t);system("cls");printf("%d\/%d\/%d 周",1900+p->tm_year,1+p->tm_mon,p->t...

求一个关于用C语言编写的电子时钟的程序,内容要有闹钟,可以调整时间
sbit key1=P0^1; \/\/ 小时调整 sbit P2_0=P2^7; \/\/秒 指示灯 sbit MN_RXD=P3^6;sbit MN_TXD=P3^7;uchar data CLOCK[4]={0,0,0,12};\/\/存放时钟时间(百分秒,秒,分,和时位)\/\/数码管显示表0-f 灭 uchar code TABLE[]={0xBE,0x06,0xEA,0x6E,0x56,0x7C,0xFC,0x...

如何用c语言调用系统时钟以数字形式显示精确到秒并可以12 24小时转换...
void delay(uchar i) \/\/延时i*2ms { uchar j=240;while(i--)while(j--);} void display(bit t) \/\/显示子函数,形参位显示标志,0位时钟,1位秒表 { uchar i,flash;static cn=0;uchar tbuf[8];uchar dbuf[8];if(!t) \/\/时钟显示 { tbuf[0]=tab[buf[0]%10];tbuf[1]=tab[...

c语言怎么样编写一个时钟程序
c语言时钟程序代码如下:include<windows.h> include<math.h> define ID_TIMER 1\/\/计时器ID define TWOPI (2*3.14159)LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR szCmdLine,int iCmdShow){ static TCHAR szAppName[]=TEXT...

怎么用C语言写可以调节的延时程序,请大侠帮忙
NEXT1:MOV TL0,#0B0H MOV TH0,#3CH DJNZ R7,HERE CLR TR0 ;定时器要软件清零 SETB EX0 RET C语言延时程序:10ms延时子程序(12MHZ)void delay10ms(void){ unsigned char i,j,k;for(i=5;i>0;i--)for(j=4;j>0;j--)for(k=248;k>0;k--);} 1s延时子程...

如何用C语言实现延时功能?
在C语言中,可以使用delay函数来实现程序的延时功能。delay函数可以使程序暂停执行一段时间,定义一个delay函数,函数的参数为延时的时间,单位为毫秒。函数的实现如e=clock();\/\/获取当前时间es);\/\/当当前时间减去开始时间小于延时时间时,程序处于等待状态,在程序中调用delay函数,并传入需要延时的时间,...

相似回答