跪求C语言编写的时钟(能修改时钟时间,且时钟是指针式的 只编写修改时间的部分也行)

 我来答
sunnyapi
2013-07-03 · TA获得超过1031个赞
知道小有建树答主
回答量:376
采纳率:100%
帮助的人:365万
展开全部
////////////////////////////////////////////

// 程序名称:钟表模拟程序(表针形式)

// 编译环境:Visual C++ 6.0,EasyX 2011惊蛰版

// 程序编写:BestAns <BestAns@qq.com>

// 最后更新:2010-10-30

//

#include
 
<graphics.h>

#include
 
<conio.h>

#include
 
<math.h>


#define

PI

3.1415926536


void
 
DrawHand
(
int
 hour
,
 
int
 minute
,
 
int
 second
)

{


double
 a_hour
,
 a_min
,
 a_sec
;





// 时、分、秒针的弧度值


int
 x_hour
,
 y_hour
,
 x_min
,
 y_min
,
 x_sec
,
 y_sec
;

// 时、分、秒针的末端位置




// 计算时、分、秒针的弧度值


a_sec 
=
 second 
*
 
2
 
*
 PI 
/
 
60
;


a_min 
=
 minute 
*
 
2
 
*
 PI 
/
 
60
 
+
 a_sec 
/
 
60
;


a_hour
=
 hour 
*
 
2
 
*
 PI 
/
 
12
 
+
 a_min 
/
 
12
;




// 计算时、分、秒针的末端位置


x_sec 
=
 
int
(
120
 
*
 
sin
(
a_sec
));

y_sec 
=
 
int
(
120
 
*
 
cos
(
a_sec
));


x_min 
=
 
int
(
100
 
*
 
sin
(
a_min
));

y_min 
=
 
int
(
100
 
*
 
cos
(
a_min
));


x_hour
=
 
int
(
70
 
*
 
sin
(
a_hour
));

y_hour
=
 
int
(
70
 
*
 
cos
(
a_hour
));




// 画时针


setlinestyle
(
PS_SOLID
,
 NULL
,
 
10
);


setcolor
(
WHITE
);


line
(
320
 
+
 x_hour
,
 
240
 
-
 y_hour
,
 
320
 
-
 x_hour 
/
 
7
,
 
240
 
+
 y_hour 
/
 
7
);




// 画分针


setlinestyle
(
PS_SOLID
,
 NULL
,
 
6
);


setcolor
(
LIGHTGRAY
);


line
(
320
 
+
 x_min
,
 
240
 
-
 y_min
,
 
320
 
-
 x_min 
/
 
5
,
 
240
 
+
 y_min 
/
 
5
);




// 画秒针


setlinestyle
(
PS_SOLID
,
 NULL
,
 
2
);


setcolor
(
RED
);


line
(
320
 
+
 x_sec
,
 
240
 
-
 y_sec
,
 
320
 
-
 x_sec 
/
 
3
,
 
240
 
+
 y_sec 
/
 
3
);

}


void
 
DrawDial
()

{


// 绘制一个简单的表盘


circle
(
320
,
 
240
,
 
2
);


circle
(
320
,
 
240
,
 
60
);


circle
(
320
,
 
240
,
 
160
);


outtextxy
(
296
,
 
310
,
 
"BestAns"
);




// 绘制刻度


int
 x
,
 y
;


for
 
(
int
 i
=
0
;
 i
<
60
;
 i
++)


{




=
 
320
 
+
 
int
(
145
 
*
 
sin
(
PI 
*
 
2
 
*
 i 
/
 
60
));




=
 
240
 
+
 
int
(
145
 
*
 
cos
(
PI 
*
 
2
 
*
 i 
/
 
60
));






if
 
(

%
 
15
 
==
 
0
)




bar
(

-
 
5
,
 y 
-
 
5
,
 x 
+
 
5
,
 y 
+
 
5
);



else
 
if
 
(

%
 
5
 
==
 
0
)




circle
(
x
,
 y
,
 
3
);



else




putpixel
(
x
,
 y
,
 WHITE
);


}

}


void
 
main
()

{


initgraph
(
640
,
 
480
);


// 初始化 640 x 480 的绘图窗口




DrawDial
();





// 绘制表盘




setwritemode
(
R2_XORPEN
);

// 设置 XOR 绘图模式




// 绘制表针


SYSTEMTIME
 
ti
;




// 定义变量保存当前时间


while
(!
kbhit
())




// 按任意键退出钟表程序


{



GetLocalTime
(&
ti
);


// 获取当前时间



DrawHand
(
ti
.
wHour
,
 ti
.
wMinute
,
 ti
.
wSecond
);

// 画表针



Sleep
(
1000
);



// 延时 1 秒



DrawHand
(
ti
.
wHour
,
 ti
.
wMinute
,
 ti
.
wSecond
);

// 擦表针(擦表针和画表针的过程是一样的)


}




closegraph
();




// 关闭绘图窗口

}

 其了就是用了easyx

追问
800行的代码,格式也不对,你也太高估我的眼力了,大神能不能把格式整对?
追答
格式本来是好的  贴过来就乱了
你直接看这个贴吧的帖子~~~很详细的
http://tieba.baidu.com/p/2276713341
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式