C语言程序设计题:模拟时钟转动的程序

C语言程序设计题:模拟时钟转动的程序,第1张

/*开发环境:turbo c 2.0模拟时钟转动程序代码*/

#include"graphics.h"

#include"math.h"

#include"dos.h"

#define pi 3.1415926

#define X(a,b,c) x=a*cos(b*c*pi/180-pi/2)+300

#define Y(a,b,c) y=a*sin(b*c*pi/180-pi/2)+240

#define d(a,b,c) X(a,b,c)Y(a,b,c)line(300,240,x,y)

void init() /*划时钟边框函数*/

{

int i,l,x1,x2,y1,y2

setbkcolor(1)

circle(300,240,200)

circle(300,240,205)

circle(300,240,5)

for(i=0i<60i++) /*划钟点上的短线*/

{

if(i%5==0)

l=15

else

l=5

x1=200*sin(i*6*pi/180)+300

y1=200*cos(i*6*pi/180)+240

x2=(200-l)*sin(i*6*pi/180)+300

y2=(200-l)*cos(i*6*pi/180)+240

line(x1,y1,x2,y2)

}

}

main()

{

int x,y,i,k=1

int gdriver=9,gmode=2

unsigned char h,m,s

int o,p,q

float n

struct time t[1]

struct date d[1]

initgraph(&gdriver,&gmode,"c:\\tc")

initgraph(&gdriver,&gmode,"c:\\tc")

for(i=0i<=6i++)

{

settextstyle(TRIPLEX_FONT,HORIZ_DIR,i) /*控制输出字符的字体,方向,大小*/

cleardevice()

settextjustify(1,1) /*在指定坐标上输出字符串*/

outtextxy(300,80,"12")

outtextxy(300,390,"6")

outtextxy(140,230,"9")

outtextxy(460,230,"3")

outtextxy(380,100,"1")

outtextxy(220,100,"11")

outtextxy(430,160,"2")

outtextxy(430,310,"4")

outtextxy(380,370,"5")

outtextxy(220,370,"7")

outtextxy(160,160,"10")

outtextxy(160,310,"8")

}

init()

setwritemode(1)/*设置画线的输出模式*/

if(k!=0)

{

getdate(d) /*获得系统日期函数*/

o=d[0].da_year

p=d[0].da_mon

q=d[0].da_day

gettime(t) /*获得系统时间函数*/

h=t[0].ti_hour

m=t[0].ti_min

s=t[0].ti_sec

}

setcolor(7)/*设置时针颜色*/

n=(float)h+(float)m/60

d(150,n,30) /*画出时针*/

setcolor(14) /*设置分针颜色*/

d(170,m,6)/*画出分针*/

setcolor(4) /*设置秒针颜色*/

d(190,s,6) /*画出秒针*/

while(!kbhit()) /*控制程序按下任意键退出*/

{

while(t[0].ti_sec==s)

gettime(t)

gotoxy(44,18) /*使光标移动到指定坐标*/

printf("\b\b\b\b\b\b\b\b\b") /*退格,使表示时间的字符串不断变化*/

sound(400) /*按给定的频率打开PC扬声器*/

delay(70) /*中断程序的执行,时间为70毫秒*/

sound(200)

delay(30)

nosound()/*按给定的频率关闭PC扬声器*/

setcolor(4)

d(190,s,6)

s=t[0].ti_sec

d(190,s,6)

if(t[0].ti_min!=m)

{

setcolor(14)

d(170,m,6)

m=t[0].ti_min

d(170,m,6)

}

if(t[0].ti_hour!=h)

{

setcolor(7)

d(150,h,30)

h=t[0].ti_hour

d(150,h,30)

sound(1000)

delay(240)

nosound()

delay(140)

sound(2000)

delay(240)

nosound()

}

if(s<10)/*用字符的形式输出时间*/

{ if(m<10)

printf("%u:0%u:0%u",h,m,s)

else

printf("%u:%u:0%u",h,m,s)

}

else

{ if(m<10)

printf("%u:0%u:%u",h,m,s)

else

printf("%u:%u:%u",h,m,s)

}

gotoxy(34,19)/*在指定坐标上输出日期*/

printf("%d年%d月%d日",o,p,q)

printf("\b\b\b\b\b\b\b\b\b")

}

getch()

closegraph()

}

#include<math.h>

#include<dos.h>

#include<graphics.h>

#include<conio.h>

#include<time.h>

#define PI 3.141592653589793

int h,m,s,i,l,mon,y,d

struct time t

struct date data

draw()

{

gettime(&t)//取得时间信息到t

s=t.ti_sec//秒

h=t.ti_hour//时

m=t.ti_min//分

getdate(&data)//取得日期信息到data

y=data.da_year//年

mon=data.da_mon//月

d=data.da_day//日

//画出钟的外圆(即是轮廓)

setcolor(11)

circle(300,200,152)

setcolor(3)

circle(300,200,157)

//画出60个分钟刻度

for(i=0i<60i+=1)

{

if(i%5==0) l=140

else l=145

line(300+150*sin(i*PI/30),200-150*cos(i*PI/30),

300+l*sin(i*PI/30),200-l*cos(i*PI/30))

}

//画秒针

setcolor(19)

line(300,200,300+140*sin(s*PI/30),200-140*cos(s*PI/30))

//画分针

setcolor(3)

line(300,200,300+110*sin(m*PI/30),200-110*cos(m*PI/30))

//画时针

setcolor(11)

line(300,200,300+90*sin(((float)h+(float)m/60)*PI/6),200-90*cos(((float)h+(float)m/60)*PI/6))

//标注钟盘上的"3"、"6"、"9"、"12"

settextstyle(3,0,2)

outtextxy(430,190,"3")

outtextxy(295,320,"6")

outtextxy(160,190,"9")

outtextxy(293,60,"12")

}

main()

{

int gd=DETECT,gm

initgraph(&gd,&gm,"")//初始化屏幕模式

setbkcolor(8)

while(!kbhit()) //若有键盘输入则跳出(结束程序)

{

draw()//绘制钟

settextstyle(3,0,5)

setcolor(9)

outtextxy(60,170,"my clock")

gotoxy(35,17)

//打印出数字形式的时间(hh:mm:ss)

if(h<10) printf("0")printf("%d:",h)

if(m<10) printf("0")printf("%d:",m)

if(s<10) printf("0")printf("%d",s)

gotoxy(33,18)

printf("%d:",y)

//打印出日期(mm:dd)

if(mon<10) printf("0")printf("%d:",mon)

if(d<10) printf("0")printf("%d",d)

sound(200)//让喇叭以200HZ叫一声

delay(70)//延时0.07秒,即是声音延续0.07秒

nosound()//停止声音

sleep(1)//停止一秒

cleardevice()//清屏

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12203070.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存