1、C语言集中上机集中上机实习报告 指导教师: 李红娟 姓 名: 尚霄 学 号: 2014211806 班 级: 0401413 时 间: 5.27 一 :实验目的 加深对授课内容的理解,能自然地,熟练地掌握一些语法规定。熟悉所用的计算机系统的操作方法,熟悉语言程序开发的环境。最终通过程序运行结果为电脑屏幕显示模拟时钟,并正常运行显示表针时间。二 :实验题目 模拟时钟转动程序 要求: 能模拟机械钟表行走,还要准确地利用数字显示日期和时间,在屏幕上显示一个活动时钟,按任意键时程序退出。三 :流程图 四 :运行环境操作系统:Windows 7C语言开发环境:vc6.0五 :模块描述1:指针式时钟表盘为
2、圆形,圆上有刻度线,有大小不同的刻度线以便观察时间。源代码:#include#include #include#include#include#include#include#define PI 3.14159void 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 =
3、 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 *
4、cos(a_hour);setlinestyle(PS_SOLID,0, NULL, 10);/设置时针的线宽度和类型setcolor(LIGHTMAGENTA);/设置颜色line(320, 240, x_hour, y_hour);/ 画时针setlinestyle(PS_SOLID,0, NULL, 6);setcolor(LIGHTMAGENTA);line(320, 240, x_min, y_min);/ 画分针setlinestyle(PS_SOLID,0, NULL, 2);setcolor(WHITE);line(320, 240, x_sec, y_sec);/ 画秒针vo
5、id main()int i,l,x1,x2,y1,y2; initgraph(640, 480); / 初始化 640 x 480 的绘图窗口circle(320, 240, 2); / 绘制一个简单的表盘circle(320, 240, 160);for(i=0;i60;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,
6、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();功能截图:2:数字式时针以数字和英文和形式准确表示出系统时间源代码:#include#include
7、 void main () time_t rawtime; struct tm * timeinfo; time ( &rawtime ); timeinfo = localtime ( &rawtime ); printf ( %s, asctime (timeinfo) ); 功能截图:五 :源代码及结果#include#include #include#include#include#include#include#define PI 3.14159#define N 20void Draw(int hour, int minute, int second)double a_hour,
8、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)
9、;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,0, NULL, 10);/设置时针的线宽度和类型setcolor(LIGHTMAGENTA);/设置颜色line(320, 240, x_hour, y_hour);/ 画时针setlinestyle(PS_SOLID,0, NULL, 6);setcol
10、or(LIGHTMAGENTA);line(320, 240, x_min, y_min);/ 画分针setlinestyle(PS_SOLID,0, NULL, 2);setcolor(WHITE);line(320, 240, x_sec, y_sec);/ 画秒针void main()int i,l,x1,x2,y1,y2; char sN;time_t rawtime; struct tm * timeinfo; initgraph(640, 480); / 初始化 640 x 480 的绘图窗口circle(320, 240, 2); / 绘制一个简单的表盘circle(320, 2
11、40, 160);for(i=0;i60;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() / 按任意键退出程序time ( &rawtime )
12、; timeinfo = localtime ( &rawtime ); /得到一个指向时间字符串的指针memcpy(s,asctime(timeinfo),sizeof(s);/把指向字符串的指针中的字符存到字符数组中sstrlen(s)-2=0;/把数组最后一个字符删掉setcolor(LIGHTMAGENTA);outtextxy(250,300,s);GetLocalTime(&ti); /获取当前时间Draw(ti.wHour, ti.wMinute, ti.wSecond); / 画表针Sleep(1000); / 延时 1 秒Draw(ti.wHour, ti.wMinute,
13、ti.wSecond); / 擦表针closegraph();/关闭窗口六 :遇到的困难和心得体会虽然学了一个学期的C语言,但自从选了这个课题以后我就深深的认识到了自己的不足。首先,这个课题所要求的类型我们以前都没有学过。请教过一些人,知道要先自学图形库和时间函数,就在网上自己找资料来看。后来了解到vc6.0中并没有图形库,曾一度想放弃。但后来经过学长的帮忙下在vc6.0中装了easyx的图形库,然后XX学习了图形库的使用和系统时间的获取,终于把结果给弄出来了。通过这个课题的实验是我认识到自己的不足之处,但同时也让我感受到了编写程序的枯燥和结果出来的欣喜,也体会到了做一件事不仅需要激情更需要坚持与细心。在编译过程中也出现了很多困难不知道从何下手,就求教学长学姐和XX,让我学会了寻求帮助。也深知要想学好一门课程必须要踏踏实实,掌握好基础才能在后面的路程中走得越远!
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1