资源描述:
《C语言编程实训报告绘图》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验说明 试验目的:掌握TurboC语言图形函数的使用和学会绘制一般图形。 试验地点:教九楼401数学系机房 实验要求(Direction):1.每个学生单独完成;2.开发语言为TurboC或C++,也可使用其它语言;3.请在自己的实验报告上写明姓名、学号、班级;4.每次交的实验报告内容包括:题目、试验目的和意义、程序制作步骤、主程序、运行结果图以及参考文件;5.自己保留一份可执行程序,考试前统一检查和上交。实验内容实验题一实验题二2.1实验题目 请绘制一个图:屏幕中央有一个半径为R1=160的大圆和一个同心的且半径为R2=
2、120的小圆,同时在大圆和小圆中间均匀分布着12个与大圆和小圆相切的圆。如下图2所示: 要求:(1)分别用12种不同的颜色和填充模式填充12个小圆;(2)用自定义模式填充中间小圆,且用漫延填充方法填充;(3)用自定义模式填充中间小圆时,填充模式图案自己设计。例如,用字母A、字母B、字母C填充图案可设计为:2.2实验目的和意义 1.学会运用画圆函数circle(),图形填充函数包括:setfillstyle()、setfillpattern()以及floodfill()来填充圆; 2.学会用自定义模式填充指定圆,并且用漫延
3、填充方法填充; 3.学会用自定义图案来填充指定圆。2.3程序制作步骤(包括算法思想、算法流程图等) 算法思想: 1.输入所要求环绕的小圆的个数n,以及中间圆所需的自定义填充模式m(1-A,2-C,3-D),设置画笔颜色,利用circle()画半径为160的大圆,然后画半径为120的小圆并按照输入的模式m选择相应的填充模式。2.利用圆内接多边形的算法,算出环绕小圆的各个圆心坐标,公式如下: x[i]=r*cos((i+1)*2.0*pi/n)+200.0 y[i]=200.0-r*sin((i+1)*2.0*pi/
4、n)以20为半径画环绕的n个小圆,并用不同的颜色填充。2.4主程序程序代码:/*-----圆的填充------*/#include"stdio.h"#include"conio.h"#include"math.h"#include"graphics.h"#definepi3.14159265#defineMAX50voidmain(){intgraphdriver=DETECT,graphmode;/*自动搜索显示器类型和显示模式*/doublex[MAX],y[MAX];inti,j,n,m;doubler,theta;doubl
5、esin(double),cos(double);charp1[8]={(char)0x38,(char)0x6c,(char)0xc6,(char)0xc6,(char)0xff,(char)0xc6,(char)0xc6,(char)0x00};charp2[8]={(char)0x36,(char)0x7e,(char)0x66,(char)0x60,(char)0x60,(char)0x66,(char)0x7e,(char)0x3c};charp3[8]={(char)0xf0,(char)0xf8,(char)0x9c,
6、(char)0x8c,(char)0x8c,(char)0x9c,(char)0xf8,(char)0xf8};r=160.0;printf("pleaseinputthenumbleofN=");scanf("%d",&n);printf("(1-A,2-C,3-D)pleaseinputthenumbleofm=");scanf("%d",&m);initgraph(&graphdriver,&graphmode,"D:\TC");/*初始化图形系统*/theta=2.0*pi/n;setcolor(3);circle(200
7、,200,200);setcolor(6);setfillstyle(12,0);switch(m){case1:setfillpattern(p1,9);circle(200,200,120);floodfill(200,200,6);break;case2:setfillpattern(p2,9);circle(200,200,120);floodfill(200,200,6);break;case3:setfillpattern(p3,9);circle(200,200,120);floodfill(200,200,6);br
8、eak;}while(!kbhit()){for(j=2;j<=n;j++)for(i=0;i<=n;i++){x[i]=r*cos(theta*(i+j))+200.0;y[i]=200.0-r*sin(theta*(i+j));s