C语言设计
2. 设计要求
1.按照给定题目独立设计程序,上机调试通过 。 2.写出设计报告
提交报告的内容如下:
1)题目内容的描述 2)应用程序功能的详细说明 3)输入数据类型、格式和内容限制; 4)主要模块的算法描述 –以程序流程图的方式给出 –简要的语言描述 5)结束语 6)程序的源代码清单 7)报告的字数,不算源代码清单不少于4页
k=0,每次循环自 增一,直到k<8
定义圆心坐 标画圆 bx = p[i].x + j*(p[i+1].xp[i].x)/(2*l*sin(PI/PNUM)) by = p[i].y + j*(p[i+1].yp[i].y)/(2*l*sin(PI/PNUM))
circle(bx, by, 5)
j=0,每次循环自增一, 直到j<2*l*sin(PI/8)
int i,j,k,cx,cy,bx,by; int l,v; FILE *fp;
/*主函数定义*/
/ *给两个整形变量赋值*/ /*图形初始化代码*/
/*主函数*/
/*定义7个整型变量*/ /*定义两个整型变量*/ /*声明fp是指针,用来指向FILE类型的对象*/
cx=200;
/*把200赋给cx*/
{
p[i].x = l*cos(PI/PNUM+i*PI/(PNUM/2)) + cx;
p[i].y = cy - l*sin(PI/PNUM+i*PI/(PNUM/2));
}
/*循环的嵌套*/
p[PNUM].x = p[0].x;
/*x赋值表达式*/
p[PNUM].y = p[0].y;
/*y的赋值表达式*/
struct POINT /*定义结构体变量名称为POINT*/
{
int x;
/*定义结构体变量包涵的整形变量x*/
int y;
/*定义结构体变量包涵的整形变量y*/
}p[PNUM+1];
/*定义一式的结构*/
void initgr(void) { int gd=DETECT,gm=0; initgraph(&gd,&gm,""); } main() {
提高我们适应实际,实践编程的能力。
6. 程序的源代码清单
#include "Conio.h"
/*字符模函数及图形模函数*/
#include "graphics.h"
/*线条图形函数*/
#include <stdio.h>
/*输入输出函数*/
#include <stdlib.h> /*动态分配储存空间函数*/
#include "graphics.h"
/*线条图形函数*/
#include <stdio.h>
/*输入输出函数*/
#include <stdlib.h>
/*动态分配储存空间函数*/
#include <dos.h>
/*调用函数*/
#include <math.h>
/*数学函数*/
#define PI 3.14159265
所参考的部分代码需要加以声明,并说明出处。
3. 应用程序功能的详细说明
1.应用程序功能说明:
先确定原点(200,200),再打开一个文件,如果文件不可写入,则规定八边形的边长为 100,小圆移动速度为10,若能写入,则从键盘输入八边形的边长及小圆移动的速度,并把输入 的数据存入文件保存,再根据
p[i].x=l*cos(PI/PNUM+i*PI/(PNUM/2))+cx,
circle(bx, by, 5);
}
}
}
}
#include <dos.h>
/*调用函数*/
#include <math.h>
/*数学函数*/
#define PI 3.14159265
/*对PI的宏定义,其值为3.14159265*/
#define PNUM 8
/*对PNUM 的宏定义,起值为8*/
#define EGAVGA_driver
/*宏定义变量*/
据也丢失了。所以为了能随时查阅数据,必须将数据输出到磁盘文件上
保存起来,使用时再从磁盘中读入到内存中。这就用到了磁盘文件的读
写操作。
fprintf()输出文件
利用函数直接将数组中的内容输送到文件中。
! kbhit()
检测从键盘输入的值,没有输入返回值为零。有输入返回键值。
line() 画线函数
函数line()使用当前绘图色、线型及线宽,在给定的两点间画一直
/*提示输入长度和速度*/
scanf("%d%d", &l, &v);
/*输入l与v的值*/
}
fprintf(fp, "%d %d", l, v);
/*磁盘文件的读写输入l、v*/
fclose(fp);
/*关闭文件流fp*/
initgr();
/*初始化*/
for(i=0; i<PNUM; i++)
/*循环体*/
目录
一.题目描述 二.设计要求 三.应用程序功能的详细说明 四.主要模块的算法描述 五.结束语 六.程序源代码
学生姓名: XCX
机械工程 学院
计算机程序训练任务书
班级0908087:
学号:090808704
设计题目:编制曲线轨迹动画程序
1. 题目要求
画一正八边形,如下图,再画一个小圆使在其正八边形边上移动。 八边形的大小和小圆移动的速度由键盘输入。并将输入的数据送文件保 存。按回车键程序结束。
/*循环体语句Biblioteka /line(p[k].x, p[k].y, p[k+1].x, p[k+1].y);
bx = p[i].x + j*(p[i+1].x-p[i].x)/(2*l*sin(PI/PNUM)); /* i点的x坐标*/
by = p[i].y + j*(p[i+1].y-p[i].y)/(2*l*sin(PI/PNUM)); /*i点的y坐标*/
p[i].y=cy-l*sin(PI/PNUM+i*PI/(PNUM/2)), 确定八边形的顶点,再运用画线函数line画出八边形,并画出小圆的初 始位置,运用循环结构使小圆运动。运行程序,输入八边形边长及小圆
速度,按回车键运行,出现所需运行结果,按退出键退出程序。
2.输入数据类型及格式:
程序设计一般由两部分组成:算法和数据结构,合理地选择和实现
cy=200;
/*把200赋给cy*/
fp = fopen("ball.txt", "w");
/*以写方式打开文件ball*/
if(fp==NULL) {
l=100; v=10;
/*if(逻辑条件)*/ /*条件为真,执行l、v*/
}
else
/*为假,执行一下语句*/
{
printf("please enter length and velocity:");
四.主要模块的算法描述
1)确定正八边形外接圆的圆心。 2)确定正八边形的八个顶点,其中第一个点与第八个点重合。 3)顺序连接个点画出正八边形。 4)确定小圆的圆心。 5)小圆的圆心与正八边形的第一个顶点重合。 6)结合4和5不断地画正八边形,已实现小圆在正八边形上运动。 7)按y键,输入自己选择的正八边形的边长,和小圆在正八边形上运动 的速率。
/*宏定义PI值为3.14159265*/
#define PNUM 8
/*对PNUM的宏定义,起值为8*/
#define EGAVGA_driver /*宏定义变量*/
struct POINT
/*定义结构图变量名称为POINT*/
{
int x;
/*定义结构体变量包涵的整形变量x*/
int y;
/*定义结构体变量包涵的整形变量y*/
i=0,每次循环自增一,直到i<8
5. 结束语
当编译连接都正确时,进行运行:在键盘里输入y,回车,再输入正 八边形的外接圆的半径l和小圆在正八边形上运行的速率v,小圆就以一定 速率在一定的正八边形上运动。按回车键结束。再次运行,按任何键, 回车,显示结果将按照上次输入的数据进行,回车键结束。
通过《计算机程序设计》课程后,进行的一次全面的综合性上机实 验。为我们提供了一个既动手又动脑,独立实践的机会,将课本上的理 论知识和实际有机的结合起来,锻炼我们的分析解决实际问题的能力。
函数circle()使用当前绘图色并以实线画一个完整的圆。该函数调用 方式为void circle(int x,int y,int radius)。 参数x,y为圆心坐标,radius为圆 半径,用像素个素表示。注意,调用circle()函数画圆时不用当前线型。 此函数对应的头文件为graphics.h。
按规定的模板封面输出,不准自定义封面格式
提交报告的格式如下:
用封面
1)正文宋体小四号字 2)每个自然段开始空两格. 3)文中英文用新罗马(time new roman),四号 4)源程序清单用英文新罗马五号 5)提交报告封面使用《沈阳理工大学课程设计(论文)》专
注:对于程序中未能实现的部分需要加以说明。对于程序中
线。该函数调用方式为void line(int startx,int starty,int endx,int endy); 参数
startx,starty为起点坐标,endx,endy为终点坐标,函数调用前后,图形状态 下屏幕光标(一般不可见)当前位置不改变。此函数相应的头文件为 graphics.h。 circle()画圆函数