1、计算机技术基础课程设计计算机技术基础课程设计 C C 语言语言 设计报告设计报告 题目题目:用:用 C C 语言描绘玫瑰花语言描绘玫瑰花 一、选题背景一、选题背景 通过 C 语言的学习,我们知道了可以用 C 语言编写的程序来描绘出优美的 画面。 玫瑰花是美丽的代表。所以我将画图的程序来实现玫瑰花的图象。 二、设计思想二、设计思想 本程序将利用图形库函数、数学函数和标准 I/O 函数来实现函数的运行。 依靠我们学过的调用函数来实现。 图形中玫瑰花的形状是利用画图函数并根据其坐标来实现的, 图形中的弧线 是利用曲线函数实现的。 主函数的调用函数大多是我们没有学过的 initgraph /*初始化图
2、形系统*/ cleardevice /*清除图形屏幕*/ hua /*自己定义的函数*/ setcolor /*设置当前画图颜色*/ rectangle /*话矩形边框*/ getch /*输入字符*/ closegraph /*关闭图形系统*/ floodfill/*填充一个有界区域*/ 三、程序流程图:三、程序流程图: N Y int i i=1 regisiter i I=360 i+ phi=I*da;xf=x*cos(phi) N Y i3 ellipse(x-98,y+100+I,255 i+ int driver=VGA,mode=VGAHI; ellipse(x=70,y=34
3、,180,233 四、主要解决问题:四、主要解决问题: 一个简单的玫瑰花程序这个玫瑰花的程序,可是问题不少,在 这个语句(rc(x+64,y-57,300,490,17);)中出现了颜色外泻 。 解决办法:利用 floodfill 函数实现填充一个有界函数。 五、程序清单:五、程序清单: #include #include #include #include 35 #define FNX(x) (int)(xo+(x)*1.0) #define FNY(y) (int)(getmaxy()-(yo+(y)*1.0) #define FNX2(phi) cos(phi)*ac-sin(phi)*
4、bs #define FNY2(phi) cos(phi)*as+sin(phi)*bc /*画旋转的椭圆*/ void elli(int xo,int yo,int a,int b,double theta) int i; double da,c,s,ac,as,bc,bs,xf,yf,phi,x,y; theta=theta*0.01745; da=3*0.1745; c=cos(theta);s=sin(theta); ac=a*c;as=a*s;bc=b*c;bs=b*s; x=FNX2(0);y=FNY2(0); moveto(FNX(x),FNY(y); for(i=1;i=360
5、;i+) phi=i*da;xf=x*cos(phi)*0.1;yf=b*sin(phi)*0.1; x=FNX2(phi);y=FNY2(phi); lineto(FNX(x),FNY(y); /*花*/ void hua(int x,int y) register i; /*画粉红色玫瑰*/ setcolor(12); arc(x+65,y-60,150,350,8); arc(x+66,y-54,300,470,8); arc(x+65,y-56,30,230,10); arc(x+64,y-57,300,490,17); ellipse(x+73,y-30,250,450,27,40)
6、; ellipse(x+59,y-30,100,290,27,40); ellipse(x+65,y-40,140,270,20,30); setfillstyle(SOLID_FILL,5); floodfill(x+65,y-20,12); /*画红色玫瑰*/ arc(x,y,150,350,12); arc(x+1,y+8,280,470,12); arc(x,y+2,30,230,16); arc(x,y+3,80,240,28); arc(x+2,y+8,180,330,22); arc(x-2,y+2,310,460,25); ellipse(x-12,y+30,120,300,30,40); ellipse(x+10,y+28,250,423,30,42); ellipse(x-4,y+10,290,393,30,40); setfillstyle(SOLID_FILL,4); floodfill(x+5,y+31,