C语言模拟时钟转动程序
用C语言实现的闹钟程序
PDF 文件使用 "pdfFactory Pro" 试用版本创建
用C语言实现的闹钟程序.txt line(x,y,x+(r-70)*cos(thetasec*(M_PI/180)),y-(r-70)*sin(thetasec*(M_PI/180 ))); } } 该程序已在Turbo C++3.0中通过编译.
用C语言实现的闹钟程序
用C语言实现的闹钟程序.txt
#include #include #include #include #include void main() { int gd=DETECT,gm; int x=320,y=240,r=200,i,h,m,s,thetamin,thetasec; struct time t; char n[12][3]={"3","2","1","12","11","10","9","8","7","6","5","4"}; initgraph(&gd,&gm,"g:\\tc\\bgi");//图形驱动器路径,根据自己的系统更换。 circle(x,y,210); setcolor(4); settextstyle(4,0,5); for(i=0;i<12;i++) { if(i!=3) outtextxy(x+(r-14)*cos(M_PI/6*i)-10,y-(r-14)*sin(M_PI/6*i)-26,n[i]); else outtextxy(x+(r-14)*cos(M_PI/6*i)-20,y-(r-14)*sin(M_PI/6*i)-26,n[i]); } gettime(&t); printf("The current time is: %2d:%02d:%02d.%02d\n",t.ti_hour, t.ti_min, t.ti_sec, t.ti_hund); while(!kbhit()) { setcolor(5); setfillstyle(1,5); circle(x,y,10); floodfill(x,y,5); gettime(&t); if(t.ti_min!=m) { setcolor(0); line(x,y,x+(r-60)*cos(thetamin*(M_PI/180)),y-(r-60)*sin(thetamin*(M_PI/180 ))); circle(x+(r-80)*cos(thetamin*(M_PI/180)),y-(r-80)*sin(thetamin*(M_PI/180)) ,10); line(x,y,x+(r-110)*cos(M_PI/6*h-((m/2)*(M_PI/180))),y-(r-110)*sin(M_PI/6*h -((m/2)*(M_PI/180)))); circle(x+(r-130)*cos(M_PI/6*h-((m/2)*(M_PI/180))),y-(r-130)*sin(M_PI/6*h-( (m/2)*(M_PI/180))),10); } if(t.ti_hour>12) t.ti_hour=t.ti_hour-12; if(t.ti_hour<4) h=abs(t.ti_hour-3); else&n bsp; h=15-t.ti_hour; m=t.ti_min; if(t.ti_min<=15) thetamin=(15-t.ti_min)*6; else thetamin=450-t.ti_min*6; if(t.ti_sec<=15) thetasec=(15-t.ti_sec)*6; else thetasec=450-t.ti_sec*6; setcolor(4); line(x,y,x+(r-110)*cos(M_PI/6*h-((m/2)*(M_PI/180))),y-(r-110)*sin(M_PI/6*h -((m/2)*(M_PI/180)))); circle(x+(r-130)*cos(M_PI/6*h-((m/2)*(M_PI/180))),y-(r-130)*sin(M_PI/6*h-( (m/2)*(M_PI/180))),10); line(x,y,x+(r-60)*cos(thetamin*(M_PI/180)),y-(r-60)*sin(thetamin*(M_PI/180 ))); circle(x+(r-80)*cos(thetamin*(M_PI/180)),y-(r-80)*sin(thetamin*(M_PI/180)) ,10); setcolor(15); line(x,y,x+(r-70)*cos(thetasec*(M_PI/180)),y-(r-70)*sin(thetasec*(M_PI/180 ))); delay(1000); setcolor(0);
C语言模拟时钟转动课程设计报告
《C语言程序设计》课程设计报告题目:模拟时钟转动程序班级:组别:组员:指导教师:目录第一章课程设计的题目 (2)1.1 C语言课程设计的题目 (2)第二章课程设计的要求 (2)2.1 C语言课程设计的要求 (2)第三章课程设计的目的 (2)3.1 C语言课程设计的目的 (2)第四章课程设计的内容 (3)4.1 C语言课程设计的程序清单和注释 (3)第五章课程设计的运行结果 (7)5.1 C语言课程设计的运行结果 (7)第六章课程设计的结果分析 (8)6.1 C语言课程设计的结果分析 (8)第七章课程设计的心得体会 (9)7.1 C语言课程设计的心得体会 (9)模拟时钟转动程序第一章课程设计的题目1.1 C语言课程设计的题目本次为期两周的课程设计的题目为设计一个模拟时钟转动的程序。
第二章课程设计的要求2.1 C语言课程设计的要求能模拟机械钟表行走;要准确地利用数字显示日期和时间;在屏幕上显示一个活动时钟;程序界面设计合理,色彩得体大方,显示正确;各指针运动规律正确;数字式时钟的时间显示与指针式时钟显示一致;按任意键时程序退出。
第三章课程设计的目的3.1 C语言课程设计的目的加深对讲授内容的理解,尤其是一些语法规定。
通过课程设计,自然地、熟练地掌握。
熟悉所用的计算机系统的操作方法,也就是熟悉语言程序开发的环境。
学会上机调试程序。
第四章课程设计的内容4.1 C语言课程设计的程序清单和注释模拟时钟转动程序清单+注释#include<windows.h> //包含窗口头文件#include<math.h> //头文件,包含了一些数学计算的函数#define TWOPI (2*3.14159)#define IDTIMER 1 //计时器ID#define ANGLE TWOPI/360 //2PILRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam,LPARAM lParam ); //回调函数Int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, LPSTR lpCmdLine,int nCmdShow ) // 应用启动函数mian {TCHAR szClassName[] = TEXT("analogCloc");MSG msg; //定义消息HWND hwnd; //窗口句柄WNDCLASS wndclass; //系统支持结构,定义并初始化窗口结构 wndclass.cbClsExtra = 0; //窗口类无扩展wndclass.cbWndExtra = 0; //窗口势力无扩展wndclass.hbrBackground = (HBRUSH)::GetStockObject(WHITE_BRUSH);//窗口背景为白色wndclass.hCursor = NULL;wndclass.hIcon = NULL;wndclass.hInstance = hInstance; //当前实例句柄 wndclass.lpfnWndProc = WindowProc; //关联到消息回调函数wndclass.lpszClassName = szClassName;wndclass.lpszMenuName = NULL; //窗口中无菜单wndclass.style = CS_HREDRAW | CS_VREDRAW ; //窗口重绘风格RegisterClass(&wndclass);hwndCreateWindow(szClassName,TEXT("Clock"),WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL, NULL, hInstance, NULL); //创建窗口ShowWindow(hwnd,nCmdShow); //显示窗口UpdateWindow(hwnd); //更新窗口,强制显示while(GetMessage(&msg,NULL,0,0)) //函数GetMessage 是从调用线程的消息队列里取得一个消息并将其放于指定的结构{TranslateMessage(&msg); //消息处理DispatchMessage(&msg); //消息派遣}return msg.wParam; //windows应用程序的消息循环形式}void setISOTROPIC(HDC hdc,int cxClient,int cyClient)//设置映射模式,使之成为笛卡尔坐标系的映射模式{SetMapMode(hdc,MM_ISOTROPIC);SetWindowExtEx(hdc,1000,1000,NULL); // 逻辑单位与设备单位比1/2SetViewportExtEx(hdc,cxClient/2,-cyClient/2,NULL);SetViewportOrgEx(hdc,cxClient/2,cyClient/2,NULL); //竖坐标向上为正,下为负}void drawClock(HDC hdc) // 画时钟圆盘{int x, y, radius; //以逻辑单位表示的窗口原点坐标SelectObject(hdc,CreateSolidBrush(RGB(1,148,138)));//设置整个窗口线条颜色for(int i=0;i<360;i+=6){x = (int)(cos(TWOPI/360*i)*900); //cos函数,包含在math.h头文件利的函数y = (int)(sin(TWOPI/360*i)*900);radius = !(i%5)?40:10;Ellipse(hdc,x-radius,y-radius,x+radius,y+radius);// 把弧度制转换成坐标形式,Ellipse函数用来画圆}}void drawHands(HDC hdc,SYSTEMTIME *pst,BOOL hChange)// draw hands函数负责绘制时钟的时针、分针和秒针的轮廓{int radius[3] = {500,700,850};int angle[3];angle[0] = pst->wHour*30+pst->wMinute/12*6;angle[1] = pst->wMinute*6;angle[2] = pst->wSecond*6;for(int i=hChange?0:2;i<3;i++){MoveToEx(hdc,0,0,NULL);LineTo(hdc,(int)(radius[i]*cos(ANGLE*(90-angle[i]))),(int)(radius[i]*sin(ANGLE*(90-angle[i]))));}}LRESULT CALLBACK WindowProc(HWND hwnd,UINT message, // 消息标识符,标识某个特定的消息WPARAM wParam,LPARAM lParam) //消息处理函数{TCHAR time[40];PAINTSTRUCT ps;HDC hdc;static int cxClient, cyClient;SYSTEMTIME st; //定义结构体变量static SYSTEMTIME preSt;BOOL hChange;switch(message) //switch 语句一个case代表一种情况 {case WM_CREATE: // 窗口创建事件SetTimer(hwnd,IDTIMER,1000,NULL); //创建一个1000ms定时器GetLocalTime(&st); //得到当前系统时间wsprintf(time,TEXT("%d年%d月%d日%d时%d分%d秒"),//记录系统时间,包括年、月、日、时、分、秒st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond);SetWindowText(hwnd,time); // 设置当前时间为窗口titlepreSt = st;return 0;case WM_SIZE:cxClient = LOWORD(lParam);cyClient = HIWORD(lParam);return 0;case WM_TIMER: //定时器到时,即是每隔一秒要重画下界面GetLocalTime(&st); //每次都要获取当前时间hChange = st.wHour!=preSt.wHour||st.wMinute!=preSt.wMinute;hdc = GetDC(hwnd);setISOTROPIC(hdc,cxClient,cyClient);SelectObject(hdc,GetStockObject(WHITE_PEN));drawHands(hdc,&preSt,hChange);SelectObject(hdc,GetStockObject(BLACK_PEN));drawHands(hdc,&st,TRUE);ReleaseDC(hwnd,hdc);wsprintf(time,TEXT("%d年%d月%d日%d时%d分%d秒"),//记录系统时间,包括年、月、日、时、分、秒st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond);SetWindowText(hwnd,time); //setwindowText函数:系统里的函数preSt = st; // 更新完毕后记录前一次的状态return 0;case WM_KEYDOWN:case WM_CHAR:DestroyWindow(hwnd); // 关闭窗口return 0;case WM_PAINT: //窗口绘制消息hdc = BeginPaint(hwnd,&ps); //开始绘制setISOTROPIC(hdc,cxClient,cyClient);drawClock(hdc);drawHands(hdc,&preSt,TRUE);EndPaint(hwnd,&ps); //结束绘制 return 0;case WM_DESTROY: //程序退出消息PostQuitMessage(0);return 0;}returnDefWindowProc(hwnd,message,wParam,lParam);//其他消息有系统默认处理}第五章课程设计的运行结果5.1 C语言课程设计的运行结果第六章课程设计的结果分析6.1 C语言课程设计的结果分析运行结果分析问题一:程序清单中某个符号添加错误,导致编译时出现错误,执行不出结果。
模拟时钟转动程序
课程设计课程名称高级语言程序课程设计题目名称模拟时钟转动程序学生学院自动化学院专业班级自动化06级(2 )班学号 3106000858 学生姓名霍杰英指导教师杨其宇2007年6月18日广东工业大学课程设计任务书题目名称模拟时钟转动程序学生学院自动化学院专业班级自动化06级(2 )班姓名霍杰英学号3106000858一、课程设计的内容要求:能模拟机械钟表行走,还要准确地利用数字显示日期和时间,在屏幕上显示一个活动时钟,按任意键时程序退出。
二、课程设计的要求与数据1、进一步掌握和利用C语言进行程设计的能力;2、进一步理解和运用结构化程序设计的思想和方法;3、初步掌握开发一个小型实用系统的基本方法;4、学会调试一个较长程序的基本方法;5、学会利用流程图或N-S图表示算法;6、掌握书写程序设计开发文档的能力。
三、课程设计应完成的工作1、编写完成相应题目的程序;2、编写课程设计报告,课程设计报告的内容应包括以下6个部分:1) 需求分析:包括设计题目、设计要求以及系统功能需求分析;2) 总体设计:包括系统总体设计框架和系统功能模块图;3) 详细设计:包括主要功能模块的算法设计思路以及对应的工作流程图;4) 调试分析过程描述:包括测试数据、测试输出结果,以及对程序调试过程中存在问题的思考(列出主要问题的出错现象、出错原因、解决方法及效果等,适当的包含结果截图);5) 总结:课程设计完成了哪些功能,有没有什么扩展功能?还有哪些地方需要改进?课程设计过程中的学习体会与收获、对本次课程设计的认识以及自己的建议等内容;6) 附录:主要源程序代码,含必要的注释。
3、答辩:在实验室建立程序运行的环境,并在指导教师的监督下,独立解决问题、运行程序和回答教师提出的问题。
四、课程设计进程安排五、应收集的资料及主要参考文献[1] 谭浩强.C程序设计(第三版)[M],北京:清华大学出版社,2005.9[2] 谭浩强. C程序设计题解与上机指导(第三版)[M],北京:清华大学出版社,2005.7[3] 夏宝岚张慕蓉夏耘.程序设计教程(第二版)[M],上海:华东理工出版社,2003.1[4] 陈锦昌赵明秀.c语言计算机绘图教程(第一版)[M],广州:华南理工大学出版社,1998.9[5] /course/3_program/c/cshl/2007213/21159.html发出任务书日期:2007年 6 月18 日指导教师签名:计划完成日期:2007年 6 月22 日基层教学单位责任人签章:主管院长签章:目录1 设计目的与要求 (5)2 总体设计 (6)3 详细设计 (7)功能模块设计 (7)3.1画出钟表的轮廓 (7)3.2获取系统时间 (7)3.3让时间和声音动起来 (7)4调试分析 (8)5 总结 (11)6 附录 (12)7 答辩记录 (16)8 指导教师意见 (17)1 目的与要求(1) C题目二十九: 模拟时钟转动程序要求:能模拟机械钟表行走,还要准确地利用数字显示日期和时间,在屏幕上显示一个活动时钟,按任意键时程序退出。
用c语言实现钟表
1. 引入所需的头文件:你需要引入一些头文件来实现程序的功能,例如 stdio.h、stdlib.h、time.h 等。
2. 定义程序的数据结构:你可以定义一个结构体来表示钟表的时间,包括时、分、秒等字段。
3. 获取当前时间:使用 time 函数获取当前系统时间,并将其转换为时、分、秒等字段。
localTime->tm_sec);
22.
23.
// 暂停一秒钟
Байду номын сангаас
24.
sleep(1);
25. }
26.
27. return 0;
28. }
29. 这个程序会不断获取当前系统时间,并输出格式为"时:分:秒"的钟表界面。程序会每 秒钟更新一次时间,并在终端上显示。你可以根据需要进行适当的修改和扩展,例
time_t currentTime = time(NULL);
17.
struct tm *localTime = localtime(¤tTime);
18.
19.
// 输出钟表界面
20.
system("clear"); // 清屏(适用于 Linux 和 Mac)
21.
printf("%02d:%02d:%02d\n", localTime->tm_hour, localTime->tm_min,
7. 下面是一个简单的 C 语言实现钟表的代码示例:
8. c 复制代码
9. #include <stdio.h>
10. #include <stdlib.h>
vc编写一个模拟时钟的程序(VC write an analog clock program)
vc编写一个模拟时钟的程序(VC write an analog clock program)I'm sorry, my program is too big, 4M, because there are other functionsNo way. Towel section proceduresVoid CFill_areaView:: myShowColok (CDC, *pDC){M_time=CTime:: GetCurrentTime ();PDC->FillRect (&CRect (0,0, rect.Width (), rect.Height ()), &CBrush (RGB (100100100));CBrush brush (RGB (150150150));CBrush *oldbrush=pDC->SelectObject (&brush);CPen pen (PS_SOLID, 3, RGB (0,0,0));CPen *oldpen=pDC->SelectObject (&pen);PDC->Ellipse (rect.Width (), /2- (rect.Height ()), /2, rect.Height () (/2-10 ()), /2- (rect.Height ()), /2, rect.Width (), /2+ (rect.Height ()), /2, rect.Height () (&CRect (), /2+ (rect.Height ()), /2-10 (/2-10) /2) /2-10 ());PDC->Ellipse (&CRect (rect.Width ()), /2-3, rect.Height (), /2-3, rect.Width (), /2+3, rect.Height () /2+3);CPen PEN2 (PS_SOLID, 7, RGB (0,0,0));PDC->SelectObject (&pen2);PDC->MoveTo (rect.Width (), /2, rect.Height (), /2-16* (rect.Height (), /2-10) /20);PDC->LineTo (rect.Width (), /2-15* (rect.Height ()), /20, rect.Height (), /2-6* (rect.Height ()) /2-10) /20 (/2-10);PDC->LineTo (rect.Width (), /2-15* (rect.Height ()), /20, rect.Height (), /2+12* (rect.Height ()) /2-10) /20 (/2-10);PDC->LineTo (rect.Width (), /2+15* (rect.Height ()), /20, rect.Height (), /2+12* (rect.Height ()) /2-10) /20 (/2-10);PDC->LineTo (rect.Width (), /2+15* (rect.Height ()), /20, rect.Height (), /2-6* (rect.Height ()) /2-10) /20 (/2-10);PDC->LineTo (rect.Width (), /2, rect.Height (), /2-16* (rect.Height (), /2-10) /20);PDC->MoveTo (rect.Width (), /2-15* (rect.Height ()), /20+25, rect.Height (), /2+12* (rect.Height ()) /2-10) /20 (/2-10);PDC->LineTo (rect.Width (), /2-15* (rect.Height ()), /20+25, rect.Height (), /2+12* (rect.Height ()) /2-10) /20+30 (/2-10);PDC->LineTo (rect.Width (), /2-15* (rect.Height ()), /20+25+40, rect.Height (), /2+12* (rect.Height ()) /2-10) /20+30 (/2-10);PDC->LineTo (rect.Width (), /2-15* (rect.Height ()), /20+25+40, rect.Height (), /2+12* (rect.Height ()) /2-10) /20 (/2-10);PDC->MoveTo (rect.Width (), /2+15* (rect.Height ()), /20-25, rect.Height (), /2+12* (rect.Height ()) /2-10) /20 (/2-10);PDC->LineTo (rect.Width (), /2+15* (rect.Height ()), /20-25, rect.Height (), /2+12* (rect.Height ()) /2-10) /20+30 (/2-10);PDC->LineTo (rect.Width (), /2+15* (rect.Height ()), /20-25-40, rect.Height (), /2+12* (rect.Height ()) /2-10) /20+30 (/2-10);PDC->LineTo (rect.Width (), /2+15* (rect.Height ()), /20-25-40, rect.Height (), /2+12* (rect.Height ()) /2-10) /20 (/2-10);CPen pen1 (PS_SOLID, 1, RGB (0,0,0));PDC->SelectObject (&pen1);Double alpha=0;MyPoint, P1, P2, p3;P1=m_pointColok[0], p2=m_pointColok[4], p3=m_pointColok[5];For (int i=0; i<=60; i++){Alpha=i*6*pi/180;P1.x=m_pointColok[0].x*cos (alpha) -m_pointColok[0].y*sin (alpha);P1.y=m_pointColok[0].x*sin (alpha) +m_pointColok[0].y*cos (alpha);PDC->MoveTo (ChangePoint (P1).X, ChangePoint (P1).Y);P2.x=m_pointColok[4].x*cos (alpha) -m_pointColok[4].y*sin (alpha);P2.y=m_pointColok[4].x*sin (alpha) +m_pointColok[4].y*cos (alpha);P3.x=m_pointColok[5].x*cos (alpha) -m_pointColok[5].y*sin (alpha);P3.y=m_pointColok[5].x*sin (alpha) +m_pointColok[5].y*cos (alpha);If (i%5==0)PDC->LineTo (ChangePoint (P2).X, ChangePoint (P2).Y);ElsePDC->LineTo (ChangePoint (P3).X, ChangePoint (P3).Y);PDC->SetBkMode (TRANSPARENT);CFont font;Font.CreateFont (16,12,0,0, FW_NORMAL),假,假,假,ansi_charset,out_default_precis,clip_default_precis,default_quality,default_pitch | ff_swiss,“Arial”);CFont * oldfont = PDC -> SelectObject(与字体);/ /改变字体PDC -> SetTextColor(RGB(255205100));PDC -> TextOut(矩形。
C语言实现电子时钟程序
C语⾔实现电⼦时钟程序本⽂实例为⼤家分享了C语⾔实现电⼦时钟程序的具体代码,供⼤家参考,具体内容如下Qt ⾥⾯运⾏#include<windows.h>#include <stdio.h>#include <stdlib.h>#include <conio.h>#include <time.h>typedef struct{int x;int y;}Point;time_t now;struct tm *pt, t1, t2;int printpoint(Point p){Point p1;p1.x = p.x + 2; p1.y = p.y + 4;gotoxy(p1.x, p1.y); printf("%c%c", 2, 2);gotoxy(p1.x, p1.y + 1); printf("%c%c", 2, 2);p1.y += 4;gotoxy(p1.x, p1.y); printf("%c%c", 2, 2);gotoxy(p1.x, p1.y + 1); printf("%c%c", 2, 2);return 0;}int print0(Point p){int i = 0;for (; i<13; i++){gotoxy(p.x + 1, p.y + i);if (i == 0 || i == 12)printf("%c%c%c%c%c%c", 2, 2, 2, 2, 2, 2);elseprintf("%c%4s%c", 2, " ", 2);}return 0;}int print1(Point p){int i = 0;for (; i<13; i++){gotoxy(p.x + 1, p.y + i);printf("%5s%c", " ", 2);}return 0;}int print2(Point p){int i = 0;for (; i<13; i++){gotoxy(p.x + 1, p.y + i);if (i == 0 || i == 6 || i == 12)printf("%c%c%c%c%c%c", 2, 2, 2, 2, 2, 2);else if (i>0 && i<6)printf("%5s%c", " ", 2);elseprintf("%c", 2);}return 0;}int print3(Point p){int i = 0;for (; i<13; i++){gotoxy(p.x + 1, p.y + i);if (i == 0 || i == 6 || i == 12)printf("%c%c%c%c%c%c", 2, 2, 2, 2, 2, 2);elseprintf("%5s%c", " ", 2);}return 0;}int print4(Point p){int i = 0;for (; i<13; i++){gotoxy(p.x + 1, p.y + i);if (i<6) printf("%c%4s%c", 2, " ", 2);else if (i == 6)printf("%c%c%c%c%c%c", 2, 2, 2, 2, 2, 2);else printf("%5s%c", " ", 2);}return 0;}int print5(Point p){int i = 0;for (; i<13; i++){gotoxy(p.x + 1, p.y + i);if (i == 0 || i == 6 || i == 12)printf("%c%c%c%c%c%c", 2, 2, 2, 2, 2, 2);else if (i>0 && i<6)printf("%c", 2);elseprintf("%5s%c", " ", 2);}return 0;}int print6(Point p){int i = 0;for (; i<13; i++){gotoxy(p.x + 1, p.y + i);if (i == 0 || i == 6 || i == 12)printf("%c%c%c%c%c%c", 2, 2, 2, 2, 2, 2);else if (i>0 && i<6)printf("%c", 2);elseprintf("%c%4s%c", 2, " ", 2);}return 0;}int print7(Point p){int i = 0;for (; i<13; i++){gotoxy(p.x + 1, p.y + i);if (i == 0) printf("%c%c%c%c%c%c", 2, 2, 2, 2, 2, 2); else printf("%5s%c", " ", 2);}return 0;}int print8(Point p){int i = 0;for (; i<13; i++){gotoxy(p.x + 1, p.y + i);if (i == 0 || i == 6 || i == 12)printf("%c%c%c%c%c%c", 2, 2, 2, 2, 2, 2);else printf("%c%4s%c", 2, " ", 2);}return 0;}int print9(Point p){int i = 0;for (; i<13; i++){gotoxy(p.x + 1, p.y + i);if (i == 0 || i == 6 || i == 12)printf("%c%c%c%c%c%c", 2, 2, 2, 2, 2, 2); else if (i>0 && i<6)printf("%c%4s%c", 2, " ", 2);elseprintf("%5s%c", " ", 2);}return 0;}int clear(Point p){int i = 0;for (; i<13; i++)gotoxy(p.x, p.y + i); printf("%16s", " ");return 0;}int printtime(Point p, int n){int a, b;Point pp;a = n / 10,b = n % 10;pp.x = p.x + 8, pp.y = p.y;switch (a){case 0: print0(p); break;case 1: print1(p); break;case 2: print2(p); break;case 3: print3(p); break;case 4: print4(p); break;case 5: print5(p); break;}switch (b){case 0: print0(pp); break;case 1: print1(pp); break;case 2: print2(pp); break;case 3: print3(pp); break;case 4: print4(pp); break;case 5: print5(pp); break;case 6: print6(pp); break;case 7: print7(pp); break;case 8: print8(pp); break;case 9: print9(pp); break;}return 0;}int main(){Point phour, pmin, psec, point1, point2;phour.x = 9, pmin.x = 32, psec.x = 55;phour.y = pmin.y = psec.y = 7;point1.x = 25, point2.x = 49;point1.y = point2.y = 7;clrscr();textbackground(YELLOW); /* 设置背景颜⾊*/ textcolor(RED); /* 设置数字显⽰颜⾊*/now = time(0);pt = localtime(&now);t1 = *pt;printtime(phour, t1.tm_hour);printpoint(point1);printtime(pmin, t1.tm_min);printpoint(point2);printtime(psec, t1.tm_sec);while (1){now = time(0);pt = localtime(&now);t2 = *pt;if (t2.tm_sec != t1.tm_sec){t1 = t2;clrscr();printtime(phour, t1.tm_hour);printpoint(point1);printtime(pmin, t1.tm_min);printpoint(point2);printtime(psec, t1.tm_sec);}if (bioskey(1) == 0) continue;else exit(0);}return 0;}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
c语言模拟时钟转动课程设计报告.
《C语言程序设计》课程设计报告题目:模拟时钟转动程序班级:组别:组员:指导教师:目录第一章课程设计的题目 (2)1.1 C语言课程设计的题目 (2)第二章课程设计的要求 (2)2.1 C语言课程设计的要求 (2)第三章课程设计的目的 (2)3.1 C语言课程设计的目的 (2)第四章课程设计的内容 (3)4.1 C语言课程设计的程序清单和注释 (3)第五章课程设计的运行结果 (7)5.1 C语言课程设计的运行结果 (7)第六章课程设计的结果分析 (8)6.1 C语言课程设计的结果分析 (8)第七章课程设计的心得体会 (9)7.1 C语言课程设计的心得体会 (9)模拟时钟转动程序第一章课程设计的题目1.1 C语言课程设计的题目本次为期两周的课程设计的题目为设计一个模拟时钟转动的程序。
第二章课程设计的要求2.1 C语言课程设计的要求能模拟机械钟表行走;要准确地利用数字显示日期和时间;在屏幕上显示一个活动时钟;程序界面设计合理,色彩得体大方,显示正确;各指针运动规律正确;数字式时钟的时间显示与指针式时钟显示一致;按任意键时程序退出。
第三章课程设计的目的3.1 C语言课程设计的目的加深对讲授内容的理解,尤其是一些语法规定。
通过课程设计,自然地、熟练地掌握。
熟悉所用的计算机系统的操作方法,也就是熟悉语言程序开发的环境。
学会上机调试程序。
第四章课程设计的内容4.1 C语言课程设计的程序清单和注释模拟时钟转动程序清单+注释#include<windows.h> //包含窗口头文件#include<math.h> //头文件,包含了一些数学计算的函数#define TWOPI (2*3.14159)#define IDTIMER 1 //计时器ID#define ANGLE TWOPI/360 //2PILRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam,LPARAM lParam ); //回调函数Int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, LPSTR lpCmdLine,int nCmdShow ) // 应用启动函数mian{TCHAR szClassName[] = TEXT("analogCloc");MSG msg; //定义消息HWND hwnd; //窗口句柄WNDCLASS wndclass; //系统支持结构,定义并初始化窗口结构wndclass.cbClsExtra = 0; //窗口类无扩展wndclass.cbWndExtra = 0; //窗口势力无扩展wndclass.hbrBackground = (HBRUSH)::GetStockObject(WHITE_BRUSH);//窗口背景为白色wndclass.hCursor = NULL;wndclass.hIcon = NULL;wndclass.hInstance = hInstance; //当前实例句柄wndclass.lpfnWndProc = WindowProc; //关联到消息回调函数wndclass.lpszClassName = szClassName;wndclass.lpszMenuName = NULL; //窗口中无菜单wndclass.style = CS_HREDRAW | CS_VREDRAW ; //窗口重绘风格RegisterClass(&wndclass);hwndCreateWindow(szClassName,TEXT("Clock"),WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL, NULL, hInstance, NULL); //创建窗口ShowWindow(hwnd,nCmdShow); //显示窗口UpdateWindow(hwnd); //更新窗口,强制显示while(GetMessage(&msg,NULL,0,0)) //函数GetMessage 是从调用线程的消息队列里取得一个消息并将其放于指定的结构{TranslateMessage(&msg); //消息处理DispatchMessage(&msg); //消息派遣}return msg.wParam; //windows应用程序的消息循环形式}void setISOTROPIC(HDC hdc,int cxClient,int cyClient)//设置映射模式,使之成为笛卡尔坐标系的映射模式{SetMapMode(hdc,MM_ISOTROPIC);SetWindowExtEx(hdc,1000,1000,NULL); // 逻辑单位与设备单位比1/2 SetViewportExtEx(hdc,cxClient/2,-cyClient/2,NULL);SetViewportOrgEx(hdc,cxClient/2,cyClient/2,NULL); //竖坐标向上为正,下为负}void drawClock(HDC hdc) // 画时钟圆盘{int x, y, radius; //以逻辑单位表示的窗口原点坐标SelectObject(hdc,CreateSolidBrush(RGB(1,148,138)));//设置整个窗口线条颜色for(int i=0;i<360;i+=6){x = (int)(cos(TWOPI/360*i)*900); //cos函数,包含在math.h头文件利的函数y = (int)(sin(TWOPI/360*i)*900);radius = !(i%5)?40:10;Ellipse(hdc,x-radius,y-radius,x+radius,y+radius);// 把弧度制转换成坐标形式,Ellipse函数用来画圆}}void drawHands(HDC hdc,SYSTEMTIME *pst,BOOL hChange)// draw hands函数负责绘制时钟的时针、分针和秒针的轮廓{int radius[3] = {500,700,850};int angle[3];angle[0] = pst->wHour*30+pst->wMinute/12*6;angle[1] = pst->wMinute*6;angle[2] = pst->wSecond*6;for(int i=hChange?0:2;i<3;i++){MoveToEx(hdc,0,0,NULL);LineTo(hdc,(int)(radius[i]*cos(ANGLE*(90-angle[i]))),(int)(radius[i]*sin(ANGLE*(90-angle[i]))));}}LRESULT CALLBACK WindowProc(HWND hwnd,UINT message, // 消息标识符,标识某个特定的消息WPARAM wParam,LPARAM lParam) //消息处理函数{TCHAR time[40];PAINTSTRUCT ps;HDC hdc;static int cxClient, cyClient;SYSTEMTIME st; //定义结构体变量static SYSTEMTIME preSt;BOOL hChange;switch(message) //switch 语句一个case代表一种情况{case WM_CREATE: // 窗口创建事件SetTimer(hwnd,IDTIMER,1000,NULL); //创建一个1000ms定时器GetLocalTime(&st); //得到当前系统时间wsprintf(time,TEXT("%d年%d月%d日%d时%d分%d秒"),//记录系统时间,包括年、月、日、时、分、秒st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond);SetWindowText(hwnd,time); // 设置当前时间为窗口titlepreSt = st;return 0;case WM_SIZE:cxClient = LOWORD(lParam);cyClient = HIWORD(lParam);return 0;case WM_TIMER: //定时器到时,即是每隔一秒要重画下界面GetLocalTime(&st); //每次都要获取当前时间hChange = st.wHour!=preSt.wHour||st.wMinute!=preSt.wMinute;hdc = GetDC(hwnd);setISOTROPIC(hdc,cxClient,cyClient);SelectObject(hdc,GetStockObject(WHITE_PEN));drawHands(hdc,&preSt,hChange);SelectObject(hdc,GetStockObject(BLACK_PEN));drawHands(hdc,&st,TRUE);ReleaseDC(hwnd,hdc);wsprintf(time,TEXT("%d年%d月%d日%d时%d分%d秒"),//记录系统时间,包括年、月、日、时、分、秒st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond);SetWindowText(hwnd,time); //setwindowText函数:系统里的函数preSt = st; // 更新完毕后记录前一次的状态return 0;case WM_KEYDOWN:case WM_CHAR:DestroyWindow(hwnd); // 关闭窗口return 0;case WM_PAINT: //窗口绘制消息hdc = BeginPaint(hwnd,&ps); //开始绘制setISOTROPIC(hdc,cxClient,cyClient);drawClock(hdc);drawHands(hdc,&preSt,TRUE);EndPaint(hwnd,&ps); //结束绘制return 0;case WM_DESTROY: //程序退出消息PostQuitMessage(0);return 0;}return DefWindowProc(hwnd,message,wParam,lParam);//其他消息有系统默认处理}第五章课程设计的运行结果5.1 C语言课程设计的运行结果第六章课程设计的结果分析6.1 C语言课程设计的结果分析运行结果分析问题一:程序清单中某个符号添加错误,导致编译时出现错误,执行不出结果。
模拟时钟转动程序
C语言集中上机实验报告题目五: 模拟时钟转动程序院系:班级:姓名:学号:指导教师:2011 年12 月08日目录一课程设计的地位、作用与目的 (2)二课程的基本要求 (2)三课程设计的主要设计思路与流程图 (2)1.设计思路2.流程图3.使用的主要函数4.程序各功能模块四程序的运行结果 (7)1.调试过程出现的问题2.运行结果五心得体会 (7)一课程设计的地位、作用与目的为综合应用C语言程序设计理论知识、进一步提高学生综合解决问题、协调工作的能力和良好的软件开发习惯,特安排本实验内容。
希望通过该实习能够进一步激发学生的学习热情,培养学生初步编程的能力,为后续的学习和发展奠定基础。
二课程的基本要求能模拟机械钟表行走,还要准确地利用数字显示日期和时间,在屏幕上显示一个活动时钟,按任意键时程序退出。
三课程设计的主要设计思路与流程图设计思路:在绘图窗口中先画出表盘后获取系统的时间,利用得到的系统时间计算表针的位置,并将时间在屏幕上输出。
每隔一秒读取一次时间,直到键盘有输入为止。
流程图开始使用的主要函数:setlinestyle 设置画线setcolor 设置颜色line(int x1,int y1,int x2,int y2)画直线circle(int x,int y,int r)画圆outtextxy(int x,int y,char *textstring)在指定位置输出字符initgraph(int x, int y); 初始化绘图窗口setwritemode( ); 设置绘图模式kbhit() 检查是否有键盘输入GetLocalTime(&ti); 获取当前时间sleep() 程序暂停若干时间程序各功能模块:1.计算表针的位置并画出表针void Drawzhizhen(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(300 + x_hour, 240 - y_hour, 300 - x_hour / 7, 240 + y_hour / 7);setlinestyle(PS_SOLID, NULL, 5);// 画分针setcolor(YELLOW);line(300 + x_min, 240 - y_min, 300 - x_min / 5, 240 + y_min / 5);setlinestyle(PS_SOLID, NULL, 2); // 画秒针setcolor(RED);line(300 + x_sec, 240 - y_sec, 300 - x_sec / 3, 240 + y_sec / 3);}2.画表盘void Drawbiaopan(){int i,l,x1,x2,y1,y2;setbkcolor(1);circle(300,240,180);circle(300,240,185);circle(300,240,20);for(i=0;i<60;i++) /*划钟点上的短线*/ {if(i%5==0)l=15;elsel=5;x1=180*sin(i*6*PI/180)+300;y1=180*cos(i*6*PI/180)+240;x2=(180-l)*sin(i*6*PI/180)+300;y2=(180-l)*cos(i*6*PI/180)+240;line(x1,y1,x2,y2);}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");}3.将获取的整数型时间变量转换成字符型void ch1(int a,int x) //将年转换成字符型并输出{char b,c,d,e;b=(char)(a/1000+48);c=(char)((a%1000)/100+48);d=(char)((a%100)/10+48);e=(char)(a%10+48);outtextxy(x,10,b);outtextxy(x+10,10,c);outtextxy(x+20,10,d);outtextxy(x+30,10,e);}void ch2(int a,int x) //其他时间转换成字符型并输出{char b,c;b=(char)(a/10+48);c=(char)(a%10+48);outtextxy(x,10,b);outtextxy(x+10,10,c);}主函数:void main(){initgraph(640, 480); // 初始化绘图窗口Drawbiaopan(); // 绘制表盘setwritemode(R2_XORPEN); // 设置绘图模式SYSTEMTIME ti; // 定义ti保存当前时间while(!kbhit()) // 按任意键退出钟表程序{GetLocalTime(&ti); // 获取当前时间ch1(ti.wYear,10);outtextxy(50,10,"年"); //输出时间ch2(ti.wMonth,65);outtextxy(85,10,"月");ch2(ti.wDay,100);outtextxy(120,10,"日");ch2(ti.wHour,135);outtextxy(155,10,":");ch2(ti.wMinute,165);outtextxy(185,10,":");ch2(ti.wSecond,195);Drawzhizhen(ti.wHour, ti.wMinute, ti.wSecond); // 画表针Sleep(1000); // 延时1 秒Drawzhizhen(ti.wHour, ti.wMinute, ti.wSecond); // 画表针}closegraph(); // 关闭绘图窗口}四程序的调试与运行结果调试过程出现的问题:1.Vc++6.0中没有“graphics.h”解决办法:安装turboc.2.0中的函数库EasyX2.无法获取系统时间解决办法:使用函数GetLocalTime( );并使用#include <time.h>声明3.Outtextxy()函数无法显示整数型时间解决办法:将整数型时间变量转换为字符型再输出运行结果:五心得体会由于C语言没有学过图形方面的知识,很多东西都要去查资料。
模拟时钟转动程序(精)
•
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");
绘制表盘部分
• void init() /*画时钟边框函数*/ • { • int i,l,x1,x2,y1,y2; • setbkcolor(1); /*设置背景颜色白色 */ • circle(300,240,200); /*画圆心为(300,240)半径200圆*/ • circle(300,240,205); • circle(230,180,25); • rectangle(220,280,400,300); /*画矩形(左上角和右下 角坐标)*/ • circle(380,180,25); • circle(300,240,5);
C语言课程设计报告-模拟时钟转动程序
课程设计报告课程名称结构化程序设计课程设计院部名称专业班级学生姓名王蕾学号课程设计地点课程设计学时指导教师金陵科技学院教务处制目录第一章课程设计的目的和要求.............................................1.1 C语言课程设计的目的............................................1.2 C语言课程设计实现的要求........................................ 第二章课程设计的任务内容............................................... 第三章详细设计说明.....................................................3.1 程序系统的结构..................................................3.1.1 实验设备及环境:(软、硬件环境)3.2 模块描述........................................................3.2.1 指针式时钟................................................3.2.2 数字式时钟................................................3.3 输出项..........................................................3.4 算法............................................................3.5 流程图..........................................................3.6 函数说明........................................................3.7 接口............................................................3.8 调试结果........................................................ 第四章软件使用说明.....................................................4.1 软件使用说明及出现的问题........................................4.2 运行结果........................................................ 第五章课程设计心得与体会............................................... 附录1:参考文献......................................................... 附录2:修改后的源代码……………………………………………………………………模拟时钟转动程序第一章课程设计的目的和要求1.1 C语言课程设计的目的加深对讲授内容的理解,尤其是一些语法规定。
C语言课程设计报告-模拟时钟转动程序
课程设计报告课程名称结构化程序设计课程设计院部名称专业班级学生姓名王蕾学号课程设计地点课程设计学时指导教师金陵科技学院教务处制目录第一章课程设计的目的和要求.............................................1.1 C语言课程设计的目的............................................1.2 C语言课程设计实现的要求........................................ 第二章课程设计的任务内容............................................... 第三章详细设计说明.....................................................3.1 程序系统的结构..................................................3.1.1 实验设备及环境:(软、硬件环境)3.2 模块描述........................................................3.2.1 指针式时钟................................................3.2.2 数字式时钟................................................3.3 输出项..........................................................3.4 算法............................................................3.5 流程图..........................................................3.6 函数说明........................................................3.7 接口............................................................3.8 调试结果........................................................ 第四章软件使用说明.....................................................4.1 软件使用说明及出现的问题........................................4.2 运行结果........................................................ 第五章课程设计心得与体会............................................... 附录1:参考文献......................................................... 附录2:修改后的源代码……………………………………………………………………模拟时钟转动程序第一章课程设计的目的和要求1.1 C语言课程设计的目的加深对讲授内容的理解,尤其是一些语法规定。
单片机时钟1234滚动程序代码
单片机时钟1234滚动程序代码单片机时钟1234滚动程序代码在单片机中,可以使用数字显示器来显示时钟。
而对于时钟的滚动显示,可以通过不断改变数字的显示值来实现。
以下是一个使用C 语言编写的单片机时钟1234滚动程序的代码示例:```c#include <reg52.h> // 引入单片机的头文件sbit D1 = P2^0; // 数字位选择引脚1sbit D2 = P2^1; // 数字位选择引脚2sbit D3 = P2^2; // 数字位选择引脚3sbit D4 = P2^3; // 数字位选择引脚4unsigned char code LED_Disp[] = { // 数码管显示0-9的编码值 0x3F, // 00x06, // 10x5B, // 20x4F, // 30x66, // 40x6D, // 50x7D, // 60x07, // 70x7F, // 80x6F // 9};void delay(unsigned int t) { // 延时函数unsigned int i, j;for (i = t; i > 0; i--)for (j = 110; j > 0; j--);}void main() {unsigned char i = 0;while (1) {D1 = 1; // 选择第一个数码管P0 = LED_Disp[i % 10]; // 显示个位数字delay(5); // 延时D1 = 0; // 关闭选择D2 = 1; // 选择第二个数码管P0 = LED_Disp[i / 10 % 10]; // 显示十位数字delay(5); // 延时D2 = 0; // 关闭选择D3 = 1; // 选择第三个数码管P0 = LED_Disp[i / 100 % 10]; // 显示百位数字delay(5); // 延时D3 = 0; // 关闭选择D4 = 1; // 选择第四个数码管P0 = LED_Disp[i / 1000 % 10]; // 显示千位数字delay(5); // 延时D4 = 0; // 关闭选择i++; // 数字递增if (i >= 10000)i = 0; // 重新计数}}```这段代码中,我们通过控制四个数码管的选择引脚,以及通过改变P0口的输出值来实现数字的显示。
用 C 语言编写一个闹钟程序
要用C 语言编写一个闹钟程序,你需要按照以下步骤进行:
包含必要的头文件:首先,你需要包含<time.h> 和<unistd.h> 两个头文件。
这两个头文件将为你提供时间和睡眠函数,这些函数是实现闹钟功能所必需的。
输入闹钟时间:接下来,你需要让用户输入闹钟的触发时间。
你可以使用scanf() 函数来获取用户输入。
计算睡眠时间:接下来,你需要计算出当前时间和闹钟触发时间之间的时间差,并使用睡眠函数等待该时间差。
你可以使用time() 函数获取当前时间,并使用difftime() 函数计算时间差。
你还可以使用sleep() 函数来等待相应的时间。
播放提醒声音:最后,你需要在闹钟触发时向用户播放一个提醒声音。
你可以使用system() 函数来执行一个系统命令,播放提醒声音。
示例代码如下:
#include <time.h>
#include <unistd.h>
#include <stdio.h>
int main() {
// 输入闹钟时间
int hour, minute;
printf("请输入闹钟时间(小时。
模拟时钟转动程序(精)
绘制表盘部分
• void init() /*画时钟边框函数*/ • { • int i,l,x1,x2,y1,y2; • setbkcolor(1); /*设置背景颜色白色 */ • circle(300,240,200); /*画圆心为(300,240)半径200圆*/ • circle(300,240,205); • circle(230,180,25); • rectangle(220,280,400,300); /*画矩形(左上角和右下 角坐标)*/ • circle(380,180,25); • circle(300,240,5);
•
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");
C语言模拟时钟转动程序
{
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)
#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() /*划时钟边框函数*/
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); /*设置秒针颜色*/
#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)
C语言运动的时钟
#include <graphics.h>#include <windows.h>#include <conio.h>#include <math.h>#define PI 3.1415926int main(void) //函数原型声明{voidDralDial();voidDrawHand(inthour, int minute, int second);initgraph(600, 600); //初始化600×600的绘图窗口setbkcolor(LIGHTMAGENTA); //设置背景色cleardevice(); //清空屏幕DralDial(); //画表盘setcolor(MAGENTA); //刻字outtextxy(235, 160, " 韩晶");outtextxy(235, 130, " 数计学院");outtextxy(235, 100, "武汉轻工大学");setwritemode(R2_XORPEN); //设置异或绘图方式SYSTEMTIME t; //定义变量保存当前时间while(!kbhit()){GetLocalTime(&t); //获取当前时间DrawHand(t.wHour, t.wMinute, t.wSecond); //画表针 Sleep(1000);DrawHand(t.wHour, t.wMinute, t.wSecond); //擦表针}closegraph(); //关闭绘图窗口return 0;}void DralDial() /*画表盘*/{inti;int x1, y1, x2, y2,x3,y3; //表心坐标系坐标char rome[][3]= {"12","1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11" } ; //数字setcolor(LIGHTGRAY); //画圆circle(300, 300, 250);circle(300, 300, 260);for(i = 0; i< 59; i++) // 画60条短线{setcolor(LIGHTGRAY);x1 = (int)(300 + (sin(i * PI / 30) * 250));y1 = (int)(300 - (cos(i * PI / 30) * 250));x2 = (int)(300 + (sin(i * PI / 30) * 260));y2 = (int)(300 - (cos(i * PI / 30) * 260));line(x1, y1, x2, y2);if(i%5==0){x3 = (int)(290 + (sin((i - 0.2) * PI / 30) * 220));y3 = (int)(290 - (cos((i - 0.2) * PI / 30) * 220));setcolor(YELLOW); //写表盘数字setfont(24, 0, "黑体");outtextxy(x3 , y3, rome[i / 5]);}}}void DrawHand(int hour, int minute, int second) //画指针{intxhour, yhour, xminute, yminute, xsecond, ysecond; //表心坐标系指针坐标 xhour = (int)(130 * sin( hour * PI / 6 + minute * PI / 360 + second * PI / 1800));yhour = (int)(130 * cos( hour * PI / 6 + minute * PI / 360 + second * PI / 1800));xminute = (int)(145 * sin( minute * PI / 30 + second * PI / 1800));yminute = (int)(145 * cos( minute * PI / 30 + second * PI / 1800));xsecond = (int)(200 * sin( second * PI / 30));ysecond = (int)(200 * cos( second * PI / 30));// setlinestyle(PS_SOLID, NULL, 10); //画时针setcolor(LIGHTGREEN);line(300 + xhour, 300 - yhour, 300 -xhour / 6, 300 + yhour / 6);// setlinestyle(PS_SOLID, NULL, 7); //画分针setcolor(LIGHTCYAN);line(300 + xminute, 300 - yminute, 300 -xminute / 4, 300 + yminute / 4);// setlinestyle(PS_SOLID, NULL, 3); //画秒针setcolor(RED);line(300 + xsecond, 300 - ysecond, 300 -xsecond / 3, 300 + ysecond / 3); }。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#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);
}
}
#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();
}
#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);
}
}。