1、03张嘉欣目 录一设计题目2二题目内容的描述2三应用程序功能的详细说明2四输入数据类型格式和内容限制8五主要模块的算法描述9六结束语11七.程序的源代码清单11附录A . 程序运行截图14沈阳理工大学材料科学与工程学院计算机程序训练任务书姓名:张嘉欣 班级:08050202 学号:03一设计题目:在屏幕上绘制一个动态五角星 具体内容 (一)设计要求 在屏幕上绘制一个五角星,每按一次键盘转九十度。用循环程序计算五角星的顶点,画直线完成。五角星显示的位置、大小和转动的方向由键盘输入,并将输入的数据送文件保存。按回车键程序结束。(功能延伸:改变数据文件的内容后,再根据数据文件里的数据绘制五角星)(二
2、)技术要求1. 按照给定题目独立设计程序,上机调试通过。2. 写出设计报告提交报告的内容如下:二 题目内容的描述 在屏幕上绘制一个五角星,每按一次键盘转九十度。用循环程序计算五角星的顶点,画直线完成。五角星显示的位置、大小和转动的方向由键盘输入,并将输入的数据送文件保存。按回车键程序结束。(功能延伸:改变数据文件的内容后,再根据数据文件里的数据绘制五角星)三应用程序功能的详细说明 void set_pentagon(int *xr,int *yr,int *r)/*insert pengaton*/ FILE *fp; char filename20,ch; printf(Input the
3、files name:); gets(filename); if(fp=fopen(filename,w+)=NULL) printf(file open error.n); exit(0); printf(please input the characters to the file:n); while(ch=getchar()!=n) fputc(ch,fp); putchar(ch); fclose(fp); printf(nplease set the xr yr and r for the pentagon you have typed in:n); scanf(%d,xr); sc
4、anf(%d,yr); scanf(%d,r); 这一段是文件的输入与输出。其中(int *xr,int *yr,int *r)中*xr,*yr,*r是形参,传地址。FILE *fp,fp是一个指向FILE类型结构体的指针变量,通过文件指针变量能够找到与他相关的变量。gets(filename)表示在遇到空格或回车时,之前的内容都存在filename中。“w+”(读写),为读写建立一个新的文本文件, if(fp=fopen(filename,w+)=NULL)是为了判断能否打开文件,NULL指空指针。fputc(ch,fp)函数的作用是将ch的值输出到fp所指向的文件中去,输出成功则返回值为输
5、出字符,如输入xr=200,yr=200,r=200。putchar(ch)的功能是把ch输出在屏幕上。 printf(nplease set the xr yr and r for the pentagon you have typed in:n); scanf(%d,xr); scanf(%d,yr); scanf(%d,r);这段的功能是输入xr,yr,r的值,存在xr,yr,r中;其中scanf中xr,yr,r无&,因为之前定义int *xr,int *yr,int *r已经传地址了。void show(struct point *p)/*show pentagon*/ int n;
6、for(n=0;n5;n+) if(n=0|n=3) setcolor(2); line(pn.x,pn.y,pn+2.x,pn+2.y); else setcolor(4); line(pn.x,pn.y,pn+2.x,pn+2.y); 这段是利用for循环两点画线形成五角星,利用if条件语句对旋转边及普通边上色。其中 for(n=0;n5;n+); line(pn.x,pn.y,pn+2.x,pn+2.y);功能是两点连线画出五角星的各边。main() int r,xr,yr; int n,i; int gd=VGA,gm=VGAHI; int k1,k2; int a; 其中int r,
7、xr,yr;中(xr,yr)是圆心坐标,这个圆是五角星的外接圆,r为此圆半径。int gd=VGA,gm=VGAHI;的功能是设置图形模式。int k1,k2;输入键值(ASCII码)。 set_pentagon(&xr,&yr,&r); printf(set turn 1 or 2:n); scanf(%d,&a); 主函数调用set_函数,其中turn1表示左转,turn2表示右转。 initgraph(&gd,&gm,); cleardevice(); if(a=1) i=1;/*turn left*/ if(a=2) i=5;/*turn right*/ while(1) cleard
8、evice(); switch(i)/*4 turns of pentagon*/ case 1:for(n=0;n7;n+) pn.x=xr-r*sin(2*PI*n/5); pn.y=yr-r*cos(2*PI*n/5); show(p); if(a=2) i=5;break; initgraph(&gd,&gm,);初始化图形模式。cleardevice();清屏。if(a=1) i=1;表示左转。if(a=2) i=5;表示右转。switch(i) 控制五角星的四个旋转方向。 case 1:for(n=0;n7;n+) pn.x=xr-r*sin(2*PI*n/5); pn.y=yr-
9、r*cos(2*PI*n/5); show(p); if(a=2) i=5;break; 其中switch函数调用show函数,break跳出后重复执行switch函数。 k1=bioskey(0); k1=k1&0xff; if(k1=13) break; if(a=1) i+; if(a=2) i-; closegraph();其中k1=bioskey(0)表示等待键盘输入。k1=k1&0xff程序的输出:Input the files name:kPlease input the characters to the file:xr=200yr=200r=200xr=200yr=200r=
10、200Please set the xr yr and r for the pentagon you have typed in:200 200 200Set turn 1 or 2:1是左转,2是右转。四 输入数据类型、格式和内容限制Main()主函数主函数中调用scanf()函数,实现数据的输入,并通过调用save(),实现文件的保存,通过调用drawcurve(),画出圆的外摆线,通过调用star()画出五角星,通过for循环不断改变传入star的值,实现五角星在外摆线是上的运动。cleardevice()清屏函数擦除整个图形屏幕并将光标移到原点 line() 画线函数功能: 函数lin
11、e()使用当前绘图色、线型及线宽,在给定的两点间画一直线。用法: 该函数调用方式为void line(int startx,int starty,int endx,int endy);说明: 参数startx,starty为起点坐标,endx,endy为终点坐标,函数调用前后,图形状态下屏幕光标(一般不可见)当前位置不改变。 此函数相应的头文件为graphics.h返回值: 无conio.h:conio.h不是C标准库中的头文件。conio是Console Input/Outp (控制台输入输出)的简写,其中定义了通过控制台进行数据输入和数据输出的函数,主要是一些用户通过按键盘产生的对应操作,
12、比如getch()函数等等。graphics.h:图形处理头文件。#include 数学运算函数#include 标准库函数#include 磁盘输出函数#define PI 3.1415926 宏定义 PI输入数据类型包括整形常量。格式和内容方面没有什么限制五 主要模块的算法描述 以程序流程图的方式给出 set_pentagonshowmain 六 结束语 通过这一学期C语言的学习,是我对C语言有了一个重新的认识,但是有些问题还不是很懂,曾多次去图书馆针对此问题查询资料,再加上同学的指点,才完成本次作业。本次计算机程序训练的题目是编辑动态五角星,转动完全由键盘控制。我编写和调试的这个程序完成
13、了动态五角星的旋转。通过本次程序训练,使我对C语言有了更深刻的了解。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。这使我对C程序的学习产生了很大的兴趣。C语言真是一个博大精深的语言,还需我们继续的学习,在以后的工作和学习中加以应用! 七程序的源代码清单 #include #include #include #include #include #define PI 3.1415926struct point int x; int y;p7;void set_pentagon(int *xr,
14、int *yr,int *r) FILE *fp; char filename20,ch; printf(Input the files name:); gets(filename); if(fp=fopen(filename,w+)=NULL) printf(file open error.n); exit(0); printf(please input the characters to the file:n); while(ch=getchar()!=n) fputc(ch,fp); putchar(ch); fclose(fp); printf(nplease set the xr y
15、r and r for the pentagon you have typed in:n); scanf(%d,xr); scanf(%d,yr); scanf(%d,r);void show(struct point *p) int n; for(n=0;n5;n+) if(n=0|n=3) setcolor(2); line(pn.x,pn.y,pn+2.x,pn+2.y); else setcolor(4); line(pn.x,pn.y,pn+2.x,pn+2.y); main() int r,xr,yr; int n,i; int gd=VGA,gm=VGAHI; int k1,k2
16、; int a; set_pentagon(&xr,&yr,&r); printf(set turn 1 or 2:n); scanf(%d,&a); initgraph(&gd,&gm,); cleardevice(); if(a=1) i=1; if(a=2) i=5; while(1) cleardevice(); switch(i) case 1:for(n=0;n7;n+) pn.x=xr-r*sin(2*PI*n/5); pn.y=yr-r*cos(2*PI*n/5); show(p); if(a=2) i=5;break; case 2:for(n=0;n7;n+) pn.x=x
17、r-r*cos(2*PI*n/5); pn.y=yr-r*sin(2*PI*n/5); show(p); break; case 3:for(n=0;n7;n+) pn.x=xr+r*sin(2*PI*n/5); pn.y=yr+r*cos(2*PI*n/5); show(p); break; case 4:for(n=0;n7;n+) pn.x=xr+r*cos(2*PI*n/5); pn.y=yr+r*sin(2*PI*n/5); show(p); if(a=1) i=0; break; case 5:for(n=0;n7;n+) pn.x=xr-r*sin(2*PI*n/5); pn.y=yr-r*cos(2*PI*n/5); show(p); break; k1=bioskey(0); k1=k1&0xff; if(k1=13) break; if(a=1) i+; if(a=2) i-; closegraph();附录A . 程序运行截图
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1