求一个c语言的电子时钟程序,运行环境是win-tc,最好再加上一份设计报告
2个回答
展开全部
* WIN-TC BGI 图形编程模板 */
#include <dos.h>
#include <math.h>
#include "Conio.h"
#include "graphics.h"
#define closegr closegraph
#define PI 3.1415926
void initgr(void) /* BGI初始化 */
{
int gd = DETECT, gm = 0; /* 和gd = VGA,gm = VGAHI是同样效果 */
registerbgidriver(EGAVGA_driver);/* 注册BGI驱动后可以不需要.BGI文件的支持运行 */
initgraph(&gd, &gm, "");
}
int main(void)
{
int r=200;
int cx;
int cy;
int i;
int x1;
int x2;
int x3;
int y1;
int y2;
int y3;
int xh;
int yh;
int xm;
int ym;
int xs;
int ys;
int r_h=120;
int r_m=150;
int r_s=180;
struct time t;
initgr(); /* BGI初始化 */
cleardevice();
setwritemode(XOR_PUT);
setbkcolor(BLUE);
setcolor(RED);
cx=getmaxx()/2;
cy=getmaxy()/2;
circle(cx,cy,r);
for(i=1;i<=60;i++)
{
setcolor(YELLOW);
if(i%5==0)
{
x3=cx+(r-10)*sin(i*PI/30);
y3=cy+(r-10)*cos(i*PI/30);
setfillstyle(SOLID_FILL,GREEN);
fillellipse(x3,y3,10,10);
}
else
{
x1=cx+r*sin(i*PI/30);
y1=cy-r*cos(i*PI/30);
y2=cy-(r-10)*cos(i*PI/30);
x2=cx+(r-10)*sin(i*PI/30);
line(x1,y1,x2,y2);
}
}
while(1)
{
gettime(&t);
xh=cx+r_h*sin(t.ti_hour%12*PI/6+t.ti_min*PI/360);
yh=cy-r_h*cos(t.ti_hour%12*PI/6+t.ti_min*PI/360);
xm=cx+r_m*sin(t.ti_min*PI/30+t.ti_sec*PI/3600);
ym=cy-r_m*cos(t.ti_min*PI/30+t.ti_sec*PI/3600);
xs=cx+r_s*sin(t.ti_sec*PI/30);
ys=cy-r_s*cos(t.ti_sec*PI/30);
setcolor(YELLOW);
line(cx,cy,xh,yh);
line(cx,cy,xm,ym);
setcolor(RED);
line(cx,cy,xs,ys);
sleep(1);
setcolor(YELLOW);
line(cx,cy,xh,yh);
line(cx,cy,xm,ym);
setcolor(RED);
line(cx,cy,xs,ys);
}
getch(); /* 暂停一下,看看前面绘图代码的运行结果 */
closegr(); /* 恢复TEXT屏幕模式 */
return 0;
}
#include <dos.h>
#include <math.h>
#include "Conio.h"
#include "graphics.h"
#define closegr closegraph
#define PI 3.1415926
void initgr(void) /* BGI初始化 */
{
int gd = DETECT, gm = 0; /* 和gd = VGA,gm = VGAHI是同样效果 */
registerbgidriver(EGAVGA_driver);/* 注册BGI驱动后可以不需要.BGI文件的支持运行 */
initgraph(&gd, &gm, "");
}
int main(void)
{
int r=200;
int cx;
int cy;
int i;
int x1;
int x2;
int x3;
int y1;
int y2;
int y3;
int xh;
int yh;
int xm;
int ym;
int xs;
int ys;
int r_h=120;
int r_m=150;
int r_s=180;
struct time t;
initgr(); /* BGI初始化 */
cleardevice();
setwritemode(XOR_PUT);
setbkcolor(BLUE);
setcolor(RED);
cx=getmaxx()/2;
cy=getmaxy()/2;
circle(cx,cy,r);
for(i=1;i<=60;i++)
{
setcolor(YELLOW);
if(i%5==0)
{
x3=cx+(r-10)*sin(i*PI/30);
y3=cy+(r-10)*cos(i*PI/30);
setfillstyle(SOLID_FILL,GREEN);
fillellipse(x3,y3,10,10);
}
else
{
x1=cx+r*sin(i*PI/30);
y1=cy-r*cos(i*PI/30);
y2=cy-(r-10)*cos(i*PI/30);
x2=cx+(r-10)*sin(i*PI/30);
line(x1,y1,x2,y2);
}
}
while(1)
{
gettime(&t);
xh=cx+r_h*sin(t.ti_hour%12*PI/6+t.ti_min*PI/360);
yh=cy-r_h*cos(t.ti_hour%12*PI/6+t.ti_min*PI/360);
xm=cx+r_m*sin(t.ti_min*PI/30+t.ti_sec*PI/3600);
ym=cy-r_m*cos(t.ti_min*PI/30+t.ti_sec*PI/3600);
xs=cx+r_s*sin(t.ti_sec*PI/30);
ys=cy-r_s*cos(t.ti_sec*PI/30);
setcolor(YELLOW);
line(cx,cy,xh,yh);
line(cx,cy,xm,ym);
setcolor(RED);
line(cx,cy,xs,ys);
sleep(1);
setcolor(YELLOW);
line(cx,cy,xh,yh);
line(cx,cy,xm,ym);
setcolor(RED);
line(cx,cy,xs,ys);
}
getch(); /* 暂停一下,看看前面绘图代码的运行结果 */
closegr(); /* 恢复TEXT屏幕模式 */
return 0;
}
参考资料: 自己做的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询