資源描述:
《C語言編程實訓報告繪圖》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在教育資源-天天文庫。
1、實驗說明 試驗目的:掌握TurboC語言圖形函數(shù)的使用和學會繪制一般圖形?! ≡囼灥攸c:教九樓401數(shù)學系機房 實驗要求(Direction):1.每個學生單獨完成;2.開發(fā)語言為TurboC或C++,也可使用其它語言;3.請在自己的實驗報告上寫明姓名、學號、班級;4.每次交的實驗報告內(nèi)容包括:題目、試驗目的和意義、程序制作步驟、主程序、運行結果圖以及參考文件;5.自己保留一份可執(zhí)行程序,考試前統(tǒng)一檢查和上交。實驗內(nèi)容實驗題一實驗題二2.1實驗題目 請繪制一個圖:屏幕中央有一個半徑為R1=160的大圓和一個同心的且半徑為R2=
2、120的小圓,同時在大圓和小圓中間均勻分布著12個與大圓和小圓相切的圓。如下圖2所示: 要求:(1)分別用12種不同的顏色和填充模式填充12個小圓;(2)用自定義模式填充中間小圓,且用漫延填充方法填充;(3)用自定義模式填充中間小圓時,填充模式圖案自己設計。例如,用字母A、字母B、字母C填充圖案可設計為:2.2實驗目的和意義 1.學會運用畫圓函數(shù)circle(),圖形填充函數(shù)包括:setfillstyle()、setfillpattern()以及floodfill()來填充圓; 2.學會用自定義模式填充指定圓,并且用漫延
3、填充方法填充; 3.學會用自定義圖案來填充指定圓。2.3程序制作步驟(包括算法思想、算法流程圖等) 算法思想: 1.輸入所要求環(huán)繞的小圓的個數(shù)n,以及中間圓所需的自定義填充模式m(1-A,2-C,3-D),設置畫筆顏色,利用circle()畫半徑為160的大圓,然后畫半徑為120的小圓并按照輸入的模式m選擇相應的填充模式。2.利用圓內(nèi)接多邊形的算法,算出環(huán)繞小圓的各個圓心坐標,公式如下: 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為半徑畫環(huán)繞的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");/*初始化圖形系統(tǒng)*/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