C语言集中上机
- 格式:doc
- 大小:146.96 KB
- 文档页数:13
集中上机实习报告 指导教师: 李红娟 姓 名: 尚霄 学 号: 2014211806 班 级: 0401413 时 间: 5.27 一 :实验目的
加深对授课内容的理解,能自然地,熟练地掌握一些语法规定。熟悉所用的计算机系统的操作方法,熟悉语言程序开发的环境。最终通过程序运行结果为电脑屏幕显示模拟时钟,并正常运行显示表针时间。
二 :实验题目 模拟时钟转动程序 要求: 能模拟机械钟表行走,还要准确地利用数字显示日期和时间,在屏幕上显示一个活动时钟,按任意键时程序退出。
三 :流程图
开始 初始化绘图绘制表盘
四 :运行环境 操作系统:Windows 7 C语言开发环境:vc6.0
五 :模块描述 1:指针式时钟 表盘为圆形,圆上有刻度线,有大小不同的刻度线以便观察时间。 源代码:
获取系统时间并保存 用字符串输出数字画表针 延时一秒 擦表针并更新时间 任意键退出 #include #include #include #include #include #include #include #define PI 3.14159 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,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);// 画秒针 } void 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;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(); } 功能截图:
2:数字式时针 以数字和英文和形式准确表示出系统时间 源代码: #include #include 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 20 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,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);// 画秒针 } void main() { int i,l,x1,x2,y1,y2; char s[N]; time_t rawtime; struct tm * timeinfo; initgraph(640, 480); // 初始化 640 x 480 的绘图窗口 circle(320, 240, 2); // 绘制一个简单的表盘 circle(320, 240, 160);
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()) // 按任意键退出程序 { time ( &rawtime ); timeinfo = localtime ( &rawtime ); //得到一个指向时间字符串的指针 memcpy(s,asctime(timeinfo),sizeof(s));//把指向字符串的指针中的字符存到字符数组中 s[strlen(s)-2]=0;//把数组最后一个字符删掉