03张嘉欣.docx

上传人:b****6 文档编号:8887736 上传时间:2023-02-02 格式:DOCX 页数:13 大小:106.64KB
下载 相关 举报
03张嘉欣.docx_第1页
第1页 / 共13页
03张嘉欣.docx_第2页
第2页 / 共13页
03张嘉欣.docx_第3页
第3页 / 共13页
03张嘉欣.docx_第4页
第4页 / 共13页
03张嘉欣.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

03张嘉欣.docx

《03张嘉欣.docx》由会员分享,可在线阅读,更多相关《03张嘉欣.docx(13页珍藏版)》请在冰豆网上搜索。

03张嘉欣.docx

03张嘉欣

目录

一.设计题目……………………………………………………………2

二.题目内容的描述……………………………………………………2

三.应用程序功能的详细说明…………………………………………2

四.输入数据类型格式和内容限制……………………………………8

五.主要模块的算法描述………………………………………………9六.结束语………………………………………………………………11

七.程序的源代码清单…………………………………………………11

附录A.程序运行截图………………………………………………14

 

沈阳理工大学材料科学与工程学院

计算机程序训练任务书

姓名:

张嘉欣班级:

08050202学号:

03

一.设计题目:

在屏幕上绘制一个动态五角星

具体内容

(一)设计要求

在屏幕上绘制一个五角星,每按一次键盘转九十度。

用循环程序计算五角星的顶点,画直线完成。

五角星显示的位置、大小和转动的方向由键盘输入,并将输入的数据送文件保存。

按回车键程序结束。

(功能延伸:

改变数据文件的内容后,再根据数据文件里的数据绘制五角星)

(二)技术要求

1.按照给定题目独立设计程序,上机调试通过。

2.写出设计报告

提交报告的内容如下:

二.题目内容的描述

在屏幕上绘制一个五角星,每按一次键盘转九十度。

用循环程序计算五角星的顶点,画直线完成。

五角星显示的位置、大小和转动的方向由键盘输入,并将输入的数据送文件保存。

按回车键程序结束。

(功能延伸:

改变数据文件的内容后,再根据数据文件里的数据绘制五角星)

三.应用程序功能的详细说明

voidset_pentagon(int*xr,int*yr,int*r)/*insertpengaton*/

{

FILE*fp;

charfilename[20],ch;

printf("Inputthefile'sname:

");

gets(filename);

if((fp=fopen(filename,"w+"))==NULL)

{printf("fileopenerror.\n");

exit(0);

}

printf("pleaseinputthecharacterstothefile:

\n");

while((ch=getchar())!

='\n')

{fputc(ch,fp);

putchar(ch);

}

fclose(fp);

printf("\npleasesetthexryrandrforthepentagonyouhavetypedin:

\n");

scanf("%d",xr);

scanf("%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所指向的文件中去,输出成功则返回值为输出字符,如输入xr=200,yr=200,r=200。

putchar(ch)的功能是把ch输出在屏幕上。

printf("\npleasesetthexryrandrforthepentagonyouhavetypedin:

\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已经传地址了。

voidshow(structpoint*p)/*showpentagon*/

{intn;

for(n=0;n<5;n++)

{if(n==0||n==3)

{setcolor

(2);

line(p[n].x,p[n].y,p[n+2].x,p[n+2].y);

}

else

{setcolor(4);

line(p[n].x,p[n].y,p[n+2].x,p[n+2].y);

}

}

}

这段是利用for循环两点画线形成五角星,利用if条件语句对旋转边及普通边上色。

其中for(n=0;n<5;n++);line(p[n].x,p[n].y,p[n+2].x,p[n+2].y);功能是两点连线画出五角星的各边。

main()

{intr,xr,yr;

intn,i;

intgd=VGA,gm=VGAHI;

intk1,k2;

inta;

其中intr,xr,yr;中(xr,yr)是圆心坐标,这个圆是五角星的外接圆,r为此圆半径。

intgd=VGA,gm=VGAHI;的功能是设置图形模式。

intk1,k2;输入键值(ASCII码)。

set_pentagon(&xr,&yr,&r);

printf("setturn1or2:

\n");

scanf("%d",&a);

主函数调用set_函数,其中turn1表示左转,turn2表示右转。

initgraph(&gd,&gm,"");

cleardevice();

if(a==1)i=1;/*turnleft*/

if(a==2)i=5;/*turnright*/

while

(1)

{cleardevice();

switch(i)/*4turnsofpentagon*/

{case1:

{for(n=0;n<7;n++)

{p[n].x=xr-r*sin(2*PI*n/5);

p[n].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)控制五角星的四个旋转方向。

{case1:

{for(n=0;n<7;n++)

{p[n].x=xr-r*sin(2*PI*n/5);

p[n].y=yr-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

程序的输出:

Inputthefile'sname:

k

Pleaseinputthecharacterstothefile:

xr=200yr=200r=200

xr=200yr=200r=200

Pleasesetthexryrandrforthepentagonyouhavetypedin:

200200200

Setturn1or2:

1是左转,2是右转。

 

四.输入数据类型、格式和内容限制

Main()主函数

主函数中调用scanf()函数,实现数据的输入,并通过调用save(),实现文件的保存,通过调用drawcurve(),画出圆的外摆线,通过调用star()画出五角星,通过for循环不断改变传入star的值,实现五角星在外摆线是上的运动。

cleardevice()清屏函数

擦除整个图形屏幕并将光标移到原点

line()画线函数功能:

函数line()使用当前绘图色、线型及线宽,在给定的两点间画一直线。

用法:

该函数调用方式为voidline(intstartx,intstarty,intendx,intendy);

说明:

参数startx,starty为起点坐标,endx,endy为终点坐标,函数调用前后,图形状态下屏幕光标(一般不可见)当前位置不改变。

此函数相应的头文件为graphics.h

返回值:

conio.h:

conio.h不是C标准库中的头文件。

conio是ConsoleInput/Outp(控制台输入输出)的简写,其中定义了通过控制台进行数据输入和数据输出的函数,主要是一些用户通过按键盘产生的对应操作,比如getch()函数等等。

graphics.h:

图形处理头文件。

#include数学运算函数

#include标准库函数

#include磁盘输出函数

#definePI3.1415926宏定义PI

输入数据类型包括整形常量。

格式和内容方面没有什么限制

 

五.主要模块的算法描述

以程序流程图的方式给出

set_pentagon

show

main

 

六.结束语

通过这一学期C语言的学习,是我对C语言有了一个重新的认识,但是有些问题还不是很懂,曾多次去图书馆针对此问题查询资料,再加上同学的指点,才完成本次作业。

本次计算机程序训练的题目是编辑动态五角星,转动完全由键盘控制。

我编写和调试的这个程序完成了动态五角星的旋转。

通过本次程序训练,使我对C语言有了更深刻的了解。

它既具有高级语言的特点,又具有汇编语言的特点。

它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。

这使我对C程序的学习产生了很大的兴趣。

C语言真是一个博大精深的语言,还需我们继续的学习,在以后的工作和学习中加以应用!

七.程序的源代码清单

#include

#include

#include

#include

#include

#definePI3.1415926

structpoint

{intx;

inty;

}p[7];

voidset_pentagon(int*xr,int*yr,int*r)

{

FILE*fp;

charfilename[20],ch;

printf("Inputthefile'sname:

");

gets(filename);

if((fp=fopen(filename,"w+"))==NULL)

{printf("fileopenerror.\n");

exit(0);

}

printf("pleaseinputthecharacterstothefile:

\n");

while((ch=getchar())!

='\n')

{fputc(ch,fp);

putchar(ch);

}

fclose(fp);

printf("\npleasesetthexryrandrforthepentagonyouhavetypedin:

\n");

scanf("%d",xr);

scanf("%d",yr);

scanf("%d",r);

}

voidshow(structpoint*p)

{intn;

for(n=0;n<5;n++)

{if(n==0||n==3)

{setcolor

(2);

line(p[n].x,p[n].y,p[n+2].x,p[n+2].y);

}

else

{setcolor(4);

line(p[n].x,p[n].y,p[n+2].x,p[n+2].y);

}

}

}

main()

{intr,xr,yr;

intn,i;

intgd=VGA,gm=VGAHI;

intk1,k2;

inta;

set_pentagon(&xr,&yr,&r);

printf("setturn1or2:

\n");

scanf("%d",&a);

initgraph(&gd,&gm,"");

cleardevice();

if(a==1)i=1;

if(a==2)i=5;

while

(1)

{cleardevice();

switch(i)

{case1:

{for(n=0;n<7;n++)

{p[n].x=xr-r*sin(2*PI*n/5);

p[n].y=yr-r*cos(2*PI*n/5);

}

show(p);

if(a==2)i=5;break;

}

case2:

{for(n=0;n<7;n++)

{p[n].x=xr-r*cos(2*PI*n/5);

p[n].y=yr-r*sin(2*PI*n/5);

}

show(p);break;

}

case3:

{for(n=0;n<7;n++)

{p[n].x=xr+r*sin(2*PI*n/5);

p[n].y=yr+r*cos(2*PI*n/5);

}

show(p);break;

}

case4:

{for(n=0;n<7;n++)

{p[n].x=xr+r*cos(2*PI*n/5);

p[n].y=yr+r*sin(2*PI*n/5);

}

show(p);

if(a==1)i=0;break;

}

case5:

{for(n=0;n<7;n++)

{p[n].x=xr-r*sin(2*PI*n/5);

p[n].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