当前位置:首页 » 编程语言 » c语言编写模拟时钟
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言编写模拟时钟

发布时间: 2022-12-16 03:46:29

‘壹’ c语言模拟时钟的代码,在vc++环境中运行。

/**
给你一个用图形库实现的案例,如果你不会用图形库或者不用图形库也无所谓,看看思路也是
很好的。你说到钟表怎么转,那必然不是显示数字那么简单,所以这个小案例会对你有点帮助。
*/
#include<stdio.h>
#include<graphics.h>
#include<math.h>
#include<conio.h>

#definePI3.141592653

voidDrawDial();
voidDrawHand(inthour,intmin,intsec);

intmain()
{
//创建一个窗口
initgraph(640,480);
SYSTEMTIMEt;

while(!kbhit())
{
DrawDial();
GetLocalTime(&t); //获取当地时间
DrawHand(t.wHour,t.wMinute,t.wSecond);
Sleep(1000); //大写的S!

BeginBatchDraw();
cleardevice();
EndBatchDraw();
}

getchar();
return0;
}

//静态的表盘
voidDrawDial()
{
circle(320,240,2);
circle(320,240,60);
circle(320,240,160);
circle(405,210,30);
outtextxy(290,315,L"电子时钟");

//绘制刻度
intx,y;
for(inti=0;i<60;i++)
{
x=320+int(145*sin(PI*2*i/60)); //半径*sinA得出x轴偏移量
y=240+int(145*cos(PI*2*i/60));
/*
PI*2-->360°
i*60-->把360分成60分,占60份中的i份
*/


if(i%15==0)
{
bar(x-5,y-5,x+5,y+5);//画矩形
}
elseif(i%5==0)
{
circle(x,y,3);
}
else
putpixel(x,y,WHITE); //画一像素(点)
}
for(inti=0;i<=11;i++)
{
x=405+int(28*sin(PI*2*i/12));
y=210+int(28*cos(PI*2*i/12));
putpixel(x,y,WHITE);
}

}


//动态表针
voidDrawHand(inthour,intmin,intsec)
{
doubleahour,amin,asec; //时分秒的弧度值
intxhour,yhour,xmin,ymin,xsec,ysec; //时分秒针的端点坐标

asec=sec*2*PI/60;
amin=min*2*PI/60+asec/60; //加上秒数带来的偏移
ahour=hour*2*PI/12+amin/12;
/*
已走的格数与自己要走的格数的比例
+
下级已走的弧度与自己要走的格数的比例
*/


xsec=int(120*sin(asec)); //120为秒针长度
ysec=int(120*cos(asec));
xmin=int(100*sin(amin));
ymin=int(100*cos(amin));
xhour=int(70*sin(ahour));
yhour=int(70*cos(ahour));


//绘制表针
setlinestyle(PS_SOLID,2);
setcolor(RED);
line(320+xsec,240-ysec,320-xsec/3,240+ysec/3);

setlinestyle(PS_SOLID,5);
setcolor(YELLOW);
line(320+xmin,240-ymin,320-xmin/3,240+ymin/3);

setlinestyle(PS_SOLID,7);
setcolor(LIGHTGREEN);
line(320+xhour,240-yhour,320-xhour/3,240+yhour/3);

//自定义main函数时,手动将样式置回初始:
setlinestyle(PS_SOLID,1);
setlinecolor(WHITE);
}

‘贰’ C语言模拟时钟

delay(240);
nosound();
delay(140);
sound(2000);
delay(240);
nosound();
}

‘叁’ c语言 时钟模拟

#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=0;i<60;i+=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(); //清屏
}
}

‘肆’ 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("Clock");

HWND hwnd;

MSG msg;

WNDCLASS wndclass;

wndclass.cbClsExtra=0;

wndclass.cbWndExtra=0;

wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);

wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);

wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);

wndclass.hInstance=hInstance;

wndclass.lpfnWndProc=WndProc;

wndclass.lpszClassName=szAppName;

wndclass.lpszMenuName=NULL;

wndclass.style=CS_HREDRAW|CS_VREDRAW;

if(!RegisterClass(&wndclass))

{

MessageBox(NULL,TEXT("This program requires Windows

T"),szAppName,MB_ICONERROR);

return 0;

}

hwnd=CreateWindow(szAppName,TEXT("Analog Clock"),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);

ShowWindow(hwnd,iCmdShow);

UpdateWindow(hwnd);

while(GetMessage(&msg,NULL,0,0))

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

return msg.wParam;

}

void Setsotropic(HDC hdc,int cxClient,int cyClient)

{

SetMapMode(hdc,MM_ISOTROPIC);

SetWindowExtEx(hdc,1000,1000,NULL);

SetViewportExtEx(hdc,cxClient/2,-cyClient/2,NULL);

SetViewportOrgEx(hdc,cxClient/2,cyClient/2,NULL);

}

void RotatePoint(POINT pt[],int iNum,int iAngle)

{

int i;

POINT ptTemp;

for(i=0;i<iNum;i++)

{

ptTemp.x=(int)(pt[i].x*cos(TWOPI*iAngle/360)+pt[i].y*sin(TWOPI*iAngle/360));

ptTemp.y=(int)(pt[i].y*cos(TWOPI*iAngle/360)+pt[i].x*sin(TWOPI*iAngle/360));

pt[i]=ptTemp;

}

}

void DrawClock(HDC hdc)

{

int iAngle;

POINT pt[3];

for(iAngle=0;iAngle<360;iAngle+=6)

{

pt[0].x=0;

pt[0].y=900;

RotatePoint(pt,1,iAngle);

pt[2].x=pt[2].y=iAngle%5?33:100;

pt[0].x-=pt[2].x/2;

pt[0].y-=pt[2].y/2;

pt[1].x=pt[0].x+pt[2].x;

pt[1].y=pt[0].y+pt[2].y;

SelectObject(hdc,GetStockObject(BLACK_BRUSH));

Ellipse(hdc,pt[0].x,pt[0].y,pt[1].x,pt[1].y );

}

}

void DrawHands(HDC hdc,SYSTEMTIME *pst,BOOL fChange)

{

static POINT pt[3][5]={0,-150,100,0,0,600,-100,0,0,-150, 0,-200,50,0,0,800,-50,0,0,-200, 0,0,0,0,0,0,0,0,0,800 };

int i,iAngle[3];

POINT ptTemp[3][5];

iAngle[0]=(pst->wHour*30)%360+pst->wMinute/2;

iAngle[1]=pst->wMinute*6;

iAngle[2]=pst->wSecond*6;

memcpy(ptTemp,pt,sizeof(pt));

for(i=fChange?0:2;i<3;i++)

{

RotatePoint(ptTemp[i],5,iAngle[i]);

Polyline(hdc,ptTemp[i],5);

}

}

LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)

{

static int cxClient,cyClient;

static SYSTEMTIME stPrevious;

BOOL fChange;

HDC hdc;

PAINTSTRUCT ps;

SYSTEMTIME st;

switch(message)

{

case WM_CREATE:

SetTimer(hwnd,ID_TIMER,1000,NULL);

GetLocalTime(&st);

stPrevious=st;

return 0;

case WM_SIZE:

cxClient=LOWORD(lParam);

cyClient=HIWORD(lParam);

return 0;

case WM_TIMER:

GetLocalTime(&st);

fChange=st.wHour!=stPrevious.wHour||st.wMinute!=stPrevious.wMinute;

hdc=GetDC(hwnd);

Setsotropic(hdc,cxClient,cyClient);

SelectObject(hdc,GetStockObject(WHITE_PEN));

DrawHands(hdc,&stPrevious,fChange);

SelectObject(hdc,GetStockObject(BLACK_PEN));

DrawHands(hdc,&st,TRUE);

stPrevious=st;

return 0;

case WM_PAINT:

hdc=BeginPaint(hwnd,&ps);

Setsotropic(hdc,cxClient,cyClient);

DrawClock(hdc);

DrawHands(hdc,&stPrevious,TRUE);

EndPaint(hwnd,&ps);

return 0;

case WM_DESTROY:

KillTimer(hwnd,ID_TIMER);

PostQuitMessage(0);

return 0;

}

return DefWindowProc(hwnd,message,wParam,lParam);

}

‘伍’ c语言简单数学时钟(结构体,指针),求大佬帮助

至今为止,在中国历史上有留下记载的四代计时器分别为:日晷、沙漏、机械钟、石英钟。在中国市场上石英钟最热销。
时钟一直以来都是国人钟爱的商品之一。新中国成立以来,国家投入大量资金发展钟表工业,使这一产业得以快速发展,此后,中国的改革开放以及经济全球化发展给中国钟表业带来了繁荣。经过几十年的发展,中国钟表业经历了进料组装-外观件制造-产品开发-创立品牌的发展过程,目前已形成配套齐全的钟表制造工业,除高端机芯外的所有零配件均可加工生产。
现状
从区域格局来看,全国已形成以广州、深圳为龙头的珠三角地区、福建、浙江、江苏、山东、天津等6大钟表主产区;从产量来看,我国已成为世界钟表生产大国,钟表产量稳居世界第一。监测数据显示,2011年,我国钟和表的产量分别达到1.59亿只和1.3亿只。
我国钟表行业发展虽然取得长足的进步,但国内钟表企业及其品牌在国际市场上的信誉度和影响力还微不足道,产量占比虽然已经达到80%以上,但是产值占比不到30%,依然没有话语权和定价权。统计数据显示,2010年从金融危机阴影中走出来的中国钟表行业实现了全面的恢复和增长,全年规模以上企业工业总产值同比增长17.12%,销售收入同比增长23.00%,均达到2008年以来的最高增速,同时利润总额也大幅增长了55.63%。此外,我国钟表出口形势也得到好转,全年共实现出口额30.49亿美元,同比增长24.27%。

‘陆’ 用c语言编写一个有滴答声音的全屏模拟时钟。

我在TC上调试通过了,不过时间好像过了额...

/*开发环境: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=0;i<60;i++) /*划钟点上的短线*/
{
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=0;i<=6;i++)
{
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();
}

‘柒’ C语言 用devc++编写一个模拟时钟,最简单那种就行,但要能在devc++上运行。

#include<iostream>
#include<windows.h>
usingnamespacestd;
classClock{
public:
Clock(shorth=0,shortm=0,shorts=0):h(h),m(m),s(s){
}
voiddisplayTime();
private:
shorth;
shortm;
shorts;
};voidClock::displayTime(){
while(true){
cout<<h<<':'<<m<<':'<<s<<"";
Sleep(1000);//一秒更新一次
cout<<' ';
if(!(s=++s%60))
if(!(m=++m%60))
h=++h%24;
}
}intmain()
{
ClockA(12,20,30);//初始时间
A.displayTime();//更新函数
return0;
}
/*
12:20:30
*/

‘捌’ 用vc++6.0C语言编写模拟时钟,大神,求助

可以参考一下下面的代码:
#include<stdio.h>
#include <graphics.h>
#include <conio.h>
#include <math.h>
#define PI 3.14159
#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 Draw(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 = 320 + (int)(120 * sin(a_sec));
y_sec = 240 - (int)(120 * cos(a_sec));
x_min = 320 + (int)(100 * sin(a_min));
y_min = 240 - (int)(100 * cos(a_min));
x_hour= 320 + (int)(70 * sin(a_hour));
y_hour= 240 - (int)(70 * cos(a_hour));
// 画时针
setlinestyle(PS_SOLID, NULL, 10);
setcolor(WHITE);
line(320, 240, x_hour, y_hour);
// 画分针
setlinestyle(PS_SOLID, NULL, 6);
setcolor(LIGHTGRAY);
line(320, 240, x_min, y_min);
// 画秒针
setlinestyle(PS_SOLID, NULL, 2);
setcolor(RED);
line(320, 240, x_sec, y_sec);
}
void main()
{
int i,l,x1,x2,y1,y2;
initgraph(640, 480); // 初始化 640 x 480 的绘图窗口 // 绘制一个简单的表盘
circle(320, 240, 2);
circle(320, 240, 160);
outtextxy(296, 300, "Quan");// 设置 XOR 绘图模式
for(i=0;i<60;i++) /*划钟点上的短线*/
{
if(i%5==0)
l=15;
else
l=5;
x1=160*sin(i*6*PI/180)+320;
y1=160*cos(i*6*PI/180)+240;
x2=(160-l)*sin(i*6*PI/180)+320;
y2=(160-l)*cos(i*6*PI/180)+240;
line(x1,y1,x2,y2);
}
setwritemode(R2_XORPEN); // 设置 XOR 绘图模式
// 绘制表针
SYSTEMTIME ti; // 定义变量保存当前时间
while(!kbhit()) // 按任意键退出钟表程序
{
GetLocalTime(&ti);
Draw(ti.wHour, ti.wMinute, ti.wSecond); // 画表针
Sleep(1000); // 延时 1 秒
Draw(ti.wHour, ti.wMinute, ti.wSecond); // 擦表针(擦表针和
}
closegraph();
}

‘玖’ C语言模拟动态时钟程序

#include "stdio.h"
#include "dos.h"
//#include <windows.h>
#include <time.h>

#define S2M_M2H 60

struct N
{
int hour;
int minute;
int second;
} mytime = {0,0,0};

int main()
{
time_t rt;
struct tm *t;
time ( &rt );
t = localtime ( &rt );
mytime.hour=t->tm_hour;
mytime.minute = t->tm_min;
mytime.second = t->tm_sec;
//1楼答得不错,你不会自己合直来么,我帮你合起来了
//以后我白天不能上网,晚上来答一两个就玩去了,这题如果可行,就采纳1楼的,我没功劳
for(; ; mytime.second++)
{
if(mytime.second==S2M_M2H)
{
mytime.minute++;
mytime.second=0;

if(mytime.minute==S2M_M2H)
{
mytime.hour++;
mytime.minute=0;
}
}
{
printf("\b\b\b\b\b\b\b\b%2d:%02d:%02d",mytime.hour,mytime.minute,mytime.second);
delay(1000);
}
}
return 0;
}

‘拾’ C语言作业:结构体编程练习 在屏幕上模拟显示一个数字式时钟 源代码能给我的话+50,感谢

#include <stdio.h>

struct clock {
int hour;
int minute;
int second;
};
typedef struct clock CLOCK;

/*
函数功能:时、分、秒时间的更新
函数参数:无
函数返回值:无
*/
void Update(CLOCK *myclock) {
myclock->second++;
if (myclock->second == 60) { /*若second值为60,表示已过1分钟,则 minute值加1*/
myclock->second = 0;
myclock->minute++;
}
if (myclock->minute == 60){ /*若minute值为60,表示已过1小时,则 hour值加1*/
myclock->minute = 0;
myclock->hour++;
}
if (myclock->hour == 24) { /*若hour值为24,则hour的值从0开始计时*/
myclock->hour = 0;
}
}

/*
函数功能:时、分、秒时间的显示
函数参数:无
函数返回值:无
*/
void Display(CLOCK *myclock) { /*用回车符'\r'控制时、分、秒显示的位置*/
printf("%2d:%2d:%2d\r", myclock->hour, myclock->minute, myclock->second);
}

/*
函数功能:模拟延迟1秒的时间
函数参数:无
函数返回值:无
*/
void Delay(void) {
long t;
for (t = 0; t < 290000000; t++) {
/*循环体为空语句的循环,起延时作用*/
}
}

int main(){
CLOCK myclock;
long i;
myclock.hour = myclock.minute = myclock.second = 0; /*hour,minute,second赋初值0*/
for (i = 0; i < 100000; i++) { /*利用循环结构,控制时钟运行的时间*/
Update(&myclock); /*时钟更新*/
Display(&myclock); /*时间显示*/
Delay(); /*模拟延时1秒*/
}
return 0;
}