




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
c语言实习报告 专业:xxxx班 姓名:xxx实习题目:整点报时时钟实习地点: 实习时间: 实习学院:专业班级: 实习者: 指导教师: 这次的计算机实训,我选择的题目是整点报时时钟;它的功能有以下几个:a. 具有指针式表盘界面(方形或圆形);b. 具有时针+分针+秒针并正确旋转;c. 时钟时间与系统时间相一致,秒针具有“滴答”声音效果.并实现整点报时.它的c语言源程序代码是:#include #define pi 3.1416#includemath.h#includedos.hvoid init_sceen(int,int,int); /*画时钟屏幕*/void sec();void main()int x0=320,y0=240,r0=150; /* 时钟的中心位置(320,240) 以及 半径(150) */init_sceen(x0,y0,r0);sec();closegraph();void init_sceen(int x0,int y0,int r0)int i,x,y,graphdriver,graphmode;char s10;float alpha,a0=90;graphdriver=detect;initgraph(&graphdriver,&graphmode,); /* 初始化图形系统 */setbkcolor(0); /* 设置背景颜色为黑色 */setcolor(2); /* 用绿色画出时钟的边框 */fillellipse(x0,y0,r0,r0+50);fillellipse(x0,y0,r0+30,r0+80);setfillstyle(1,1); /* 把时钟钟面以外都填成蓝色 */floodfill(x0-r0-50,y0,2);for(i=12;i=1;i-) /* 计算出数字112的位置 并在相应的位置输出数字*/ alpha=(a0+30*(11-i)*pi/180); x=x0+cos(alpha)*(r0-10); y=y0-sin(alpha)*r0; sprintf(s,%2d,i); setcolor(4); settextstyle(0,0,1); /* 设置输出数字的字体 大小 */ outtextxy(x,y,s); /*画出刻度*/ for(i=60;i=1;i-) alpha=(a0+6*(60-i)*pi/180); x=x0+cos(alpha)*(r0-20); y=y0-sin(alpha)*(r0-20); setcolor(14); if(i%5=0) circle(x,y,5); else circle(x,y,2); floodfill(x,y,14); setlinestyle(0,0,3); /*以上部分的作用是完成表盘的设计*/ void sec(void)int x,y,i,j,k,xj,yj,xk,yk,xi,yi,x0=320,y0=240,r0=150;union regs r;unsigned char *shijian=;unsigned char *daa=;struct time tim;struct date dat;float alphai,alphak,alphaj,a0=90;xi=x0;yi=y0;xj=x0;yj=y0;xk=x0;yk=y0;do x=38;y=12;gettime(&tim); /* 从本机中获取时间 */sprintf(shijian,%02d:%02d:%02d,tim.ti_hour,tim.ti_min,tim.ti_sec); /*获取日期*/getdate(&dat);sprintf(daa,%02d-%02d-%02d,dat.da_year,dat.da_mon,dat.da_day);bar(255,290,385,310); /* 一数字的形式输出日期 */setcolor(red);outtextxy(275,295,daa);x=290;y=460;setcolor(red);outtextxy(100,y,designed by yang fan); /* 在指定位置显示字符 */setcolor(lightred);outtextxy(x,y0+20, watch );setlinestyle(0,0,3);k=tim.ti_hour;j=tim.ti_min;i=tim.ti_sec;alphak=(a0+30*(12-k)-j*5/60.*6)*pi/180;alphaj=(a0-6*j)*pi/180; /* 画秒针 */alphai=(a0+6*(60-i)*pi/180;x=x0+cos(alphai)*(r0-32);y=y0-sin(alphai)*(r0-32);setcolor(white);line(x0,y0,xi,yi);setcolor(red);line(x0,y0,x,y);xi=x;yi=y; /* 画分针 */x=x0+cos(alphaj)*(r0-60);y=y0-sin(alphaj)*(r0-60);setcolor(white);line(x0,y0,xj,yj);setcolor(12);line(x0,y0,x,y);xj=x;yj=y; /* 画时针 */x=x0+cos(alphak)*(r0-80);y=y0-sin(alphak)*(r0-80);setcolor(white);line(x0,y0,xk,yk);setcolor(13);line(x0,y0,x,y);xk=x;yk=y;delay(1000);while(!kbhit();/*在不按任何键的时候执行上面的命令.即按任何键退出 */该程序运行结果是:一个椭圆形表盘,背景为黑色,时钟钟面以外都填成蓝色,时钟的边框为绿色。时钟时针,分针,秒针都正常运转。时钟中心下方有“watch”字样,左下方有“designed by yang fan”字样。该设计的缺点是表盘上无数字“9”显示,且表盘的数字与刻度有一些偏差。修改后的c语言程序代码是:#include #define pi 3.1416#includemath.h#includedos.h#include#include#define s1 45#define s2 s1/2#define s4 s1/4#define s8 s1/8#define s16 s1/16enum freqdef l1=131,l2=147,l3=165,l4=175,l5=196,l6=220,l7=247, n1=262,n2=296,n3=330,n4=349,n5=392,n6=440,n7=494, h1=523,h2=587,h3=659,h4=698,h5=784,h6=880,h7=988, i1=1047,i2=1175,i3=1319,i4=1397,i5=1568,i6=1760,i7=1976song= n2,s4,n2,s8,n3,s16,n2,s16,n1,s4,l6,s4,l5,s8,l3,s8,l5,s8,l6,s8,n1,s2,l6,s4, l6,s8,n1,s8,n5,s8,n6,s8,n3,s8,n5,s8,n2,s1,n3,s4,n3,s8,n2,s8,n3,s8,n5,s4,n3,s4, l5,s8,l3,s8,l5,s8,l6,s8,n1,s2,l6,s4,l6,s8,n1,s8,l6,s8,l6,s8,l2,s8,l3,s8,l5,s1,n2,s4, n2,s4,n5,s4,n6,s8,n5,s8,n4,s2,n5,s2,n6,s4,n5,s8,n3,s8,n2,s8,n3,s16,n2,s16,n1,s8,l6,s16, n1,s16,n2,s1,n3,s4,n2,s8,n3,s8,n5,s4,n3,s4,l5,s8,l3,s8,l5,s8,l6,s8,n1,s2,l6,s4, l6,s8,n1,s8,n2,s8,l6,s8,n1,s8,n3,s8,n2,s1,0;/*编写报时音乐*/void init_sceen(int,int,int); /*画时钟屏幕*/void sec();void main()int x0=320,y0=240,r0=150; /* 时钟的中心位置(320,240) 以及 半径(150) */init_sceen(x0,y0,r0);sec();closegraph();void init_sceen(int x0,int y0,int r0)int i,x,y,graphdriver,graphmode;char s10;float alpha,a0=90;graphdriver=detect;initgraph(&graphdriver,&graphmode,); /* 初始化图形系统 */setbkcolor(0); /* 设置背景颜色为黑色 */setcolor(2); /* 用绿色画出时钟的边框 */fillellipse(x0,y0,r0+50,r0+30);fillellipse(x0,y0,r0+50,r0+30);setcolor(2); fillellipse(200,80,30,50);fillellipse(200,100,18,30);fillellipse(430,80,30,50);fillellipse(430,100,18,30); /* 用绿色画出耳朵 */setcolor(0);circle(260,180,15);circle(380,180,15);circle(260,180,2);circle(380,180,2); /* 用黑色画出眼睛 */setcolor(2);line(260,220,180,210);line(260,240,175,240);line(260,260,180,270);line(380,220,460,210);line(380,240,465,240);line(380,260,460,270); /* 用绿色画出胡子 */setfillstyle(1,1); /* 把时钟钟面以外都填成蓝色 */floodfill(x0-r0-50,y0,2);for(i=12;i=1;i-) /* 计算出数字112的位置 并在相应的位置输出数字*/ alpha=(a0+30*(11-i)*pi/180)+0.05; x=x0+cos(alpha)*r0-10; y=y0-sin(alpha)*r0-5; /* 使显示的数字水平 */ sprintf(s,%2d,i); setcolor(4); settextstyle(0,0,1); /* 设置输出数字的字体 大小 */ outtextxy(x,y,s); /*画出刻度*/ for(i=60;i=1;i-) alpha=(a0+6*(60-i)*pi/180)+10; /* 使显示的刻度水平 */ x=x0+cos(alpha)*(r0-20); y=y0-sin(alpha)*(r0-20); setcolor(14); if(i%5=0) circle(x,y,5); else circle(x,y,2); floodfill(x,y,14); setlinestyle(0,0,3); /*以上部分的作用是完成表盘的设计*/ void sec(void)int x,y,i,j,k,xj,yj,xk,yk,xi,yi,x0=320,y0=240,r0=150;union regs r;unsigned char *shijian=;unsigned char *daa=;struct time tim;struct date dat;float alphai,alphak,alphaj,a0=90;xi=x0;yi=y0;xj=x0;yj=y0;xk=x0;yk=y0;do x=38;y=12;gettime(&tim); /* 从本机中获取时间 */sprintf(shijian,%02d:%02d:%02d,tim.ti_hour,tim.ti_min,tim.ti_sec);char a10;setcolor(red);sprintf(shijian,%02d:%02d:%02d,tim.ti_hour,tim.ti_min,tim.ti_sec);outtextxy(290,320,shijian);/* 显示时间 */if(0tim.ti_hour8); control=inportb(0x61); outportb(0x61,(control)|0x3); goal=(clock_t)dur+clock(); while(goalclock(); if(fre) outportb(0x61,control); goal=(clock_t)0; note=note+2; /* 整点报时 */ /*获取日期*/getdate(&dat);sprintf(daa,%02d-%02d-%02d,dat.da_year,dat.da_mon,dat.da_day);bar(255,290,385,310); /* 一数字的形式输出日期 */setcolor(red);outtextxy(275,295,daa);x=290;y=460;setcolor(red);outtextxy(230,y,designed by duan zhi hao); /* 在指定位置显示字符 */setcolor(lightred);outtextxy(x,y0+20, watch );setlinestyle(0,0,3);k=tim.ti_hour;j=tim.ti_min;i=tim.ti_sec;alphak=(a0+30*(12-k)-j*5/60.*6)*pi/180;alphaj=(a0-6*j)*pi/180; /* 画秒针 */alphai=(a0+6*(60-i)*pi/180;x=x0+cos(alphai)*(r0-32);y=y0-sin(alphai)*(r0-32);setcolor(white);line(x0,y0,xi,yi);setcolor(red);line(x0,y0,x,y);xi=x;yi=y; /* 画分针 */ x=x0+cos(alphaj)*(r0-60);y=y0-sin(alphaj)*(r0-60);setcolor(white);line(x0,y0,xj,yj);setcolor(12);line(x0,y0,x,y);xj=x;yj=y;/* 画时针 */x=x0+cos(alphak)*(r0-80);y=y0-sin(alphak)*(r0-80);setcolor(white);line(x0,y0,xk,yk);setcolor(13);line(x0,y0,x,y);xk=x;yk=y;delay(1000);while(!kbhit(); /*在不按任何键的时候执行上面的命令.即按任何键退出 */修改后的程序运行结果为:背景颜色为黑色,时钟钟面为白色,上面有一个小猫的头像,且在图案上出现了时间的显示。小猫的图案由绿色画出。时钟时针,分针,秒针都正常运转。时钟中心下方有“watch”字样,左下方有“designed by duan zhi hao”字样。经过修改后,钟表表盘上的数字,刻度,指针都一一对应,且具有了整点报时的功能,响铃时间三十秒。实习心得:一周的上机实习结束了,在这段时间内,我的c语言知识得到了温习,我觉得这次实习很重要,而且是恰逢其时,当然通过自己对程序改编的过程,也有了一些心得:首先改程序是一个很费力的活动,你必须先把改编之前的程序全部弄明白后,才能知道程序中的不足,对其进行完善;其次,编程要有一个扎实的知识储备,没把课本看好,没把例题看好,不会读得懂程序,更不可能把程序修改的更好,同时,如果不多看程序,不断吸收别人的编程思想,也就不会编出精彩的程序;当然也不能忽略与别人讨论与请教,在这过程中,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 数字化在房地产项目管理中的运用
- 头发柔顺度的提升方法
- 如何进行土地开发项目管理
- 护理实践中的困难与挑战
- 成本控制在房地产项目管理中的应用
- 德克士 创新美食零距离
- 保险公司援藏活动方案
- 保险公司竞标活动方案
- 保险公司酒会策划方案
- 保险推销活动方案
- 电梯更换钢丝绳施工方案
- 植物保护学考试复习资料
- 科学二年级第二学期双减期末综合测评方案
- 关于涉农企业税收风险管理的实践和思考
- 6.医院感染综合性监测制度
- 05S502阀门井图集
- 定语从句语法讲解
- 毕业设计英文文献中文翻译_TCP分离器_基于可重构硬件的TCPIP流量监控
- 轮扣式支架模板施工方案
- 货物及服务招标和外贸代理服务商资格遴选项目遴选文件.docx
- 图像的频域增强
评论
0/150
提交评论