stdio.h是c的頭文件,包含了對(duì)你使用的函數(shù)的聲明。
創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),泉山企業(yè)網(wǎng)站建設(shè),泉山品牌網(wǎng)站建設(shè),網(wǎng)站定制,泉山網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,泉山網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
當(dāng)你決定使用某個(gè)函數(shù)的時(shí)候,你去查它的幫助信息,都會(huì)看到這個(gè)函數(shù)的聲明是包含在哪個(gè)頭文件的,這樣你就可以把它包含進(jìn)來,從而使用這個(gè)函數(shù)。
具體請(qǐng)查閱c語言對(duì)于include的講解,還有對(duì)于函數(shù),變量的聲明部分。 include stdio.h 是C的輸入輸出函數(shù),但在C++中使用可以省略.
#include math.h 是數(shù)學(xué)函數(shù),譬如你要用到squar()函數(shù)時(shí)就必須添加這個(gè)頭文件.
#include string.h是字符竄函數(shù).
#include stdlib.h呵呵,這個(gè)有點(diǎn)忘記了,好久沒有用了,不好意思啊
反正這幾個(gè)是常用的,其他還有很多很多,呵呵,自己可以看書后面的幾頁都有介紹的呢!~ #includeiostream.h:此頭文件申明了所有I/O操作所需的基本服務(wù),即支持流的輸入輸出操作,譬如程序中有cin ,cout
#includeiomanip.h:此頭文件說明可以使用控制數(shù)據(jù)的輸出格式,如設(shè)置數(shù)制、填充字符、精度、數(shù)據(jù)寬度等等,譬如使用setw()、setfill() 、setprecision()等
#include string.h是字符竄處理函數(shù)
#includeafx.h程序中要使用CString類
#include stdlib.h程序中要使用C語言系統(tǒng)提供的庫函數(shù)gets和puts函數(shù)
回答者:雨之淚1988 - 助理 二級(jí) 2-6 08:35
stdio.h是輸入輸出頭文件,所有有關(guān)輸入輸出的語句如"printf","scanf","putchar","getchar"等,都要用該頭文件,頭文件其實(shí)就是定義了這些函數(shù)的文件,它是系統(tǒng)提供給我們的接口
math.h是再進(jìn)行數(shù)學(xué)運(yùn)算時(shí)要包含的頭文件,它提供了取絕對(duì)值,開方,求冪等數(shù)學(xué)運(yùn)算
#includeconio.h與#includestdio.h 一樣,是頭文件包含。
這個(gè)頭文件包含有許多庫函數(shù)像#includestdio.h包含printf與
scanf一樣,getch()也是其中一個(gè)函數(shù),它的功能是無回顯得到一
字符,常用這個(gè)函數(shù)做密碼之類的程序。在TC中編譯不需要加頭文件
可以,編譯器默認(rèn)包含。就像在TC是不用加#includestdio.h一樣。
但在VC中編譯就要加了。否則系統(tǒng)認(rèn)為你的函數(shù)沒有定義。
其它頭文件你只要再TC文件夾中看看include這個(gè)文件夾里面的文件就可以了
圖形和圖像函數(shù)包含在graphics.h里面
(一) 像素函數(shù)
56. putpiel() 畫像素點(diǎn)函數(shù)
57. getpixel()返回像素色函數(shù)
(二) 直線和線型函數(shù)
58. line() 畫線函數(shù)
59. lineto() 畫線函數(shù)
60. linerel() 相對(duì)畫線函數(shù)
61. setlinestyle() 設(shè)置線型函數(shù)
62. getlinesettings() 獲取線型設(shè)置函數(shù)
63. setwritemode() 設(shè)置畫線模式函數(shù)
(三)、多邊形函數(shù)
64. rectangle() 畫矩形函數(shù)
65. bar() 畫條函數(shù)
66. bar3d() 畫條塊函數(shù)
67. drawpoly() 畫多邊形函數(shù)
(四)、 圓、弧和曲線函數(shù)
68. getaspectratio()獲取縱橫比函數(shù)
69. circle()畫圓函數(shù)
70. arc() 畫圓弧函數(shù)
71. ellipse()畫橢圓弧函數(shù)
72. fillellipse() 畫橢圓區(qū)函數(shù)
73. pieslice() 畫扇區(qū)函數(shù)
74. sector() 畫橢圓扇區(qū)函數(shù)
75. getarccoords()獲取圓弧坐標(biāo)函數(shù)
(五)、 填充函數(shù)
76. setfillstyle() 設(shè)置填充圖樣和顏色函數(shù)
77. setfillpattern() 設(shè)置用戶圖樣函數(shù)
78. floodfill() 填充閉域函數(shù)
79. fillpoly() 填充多邊形函數(shù)
80. getfillsettings() 獲取填充設(shè)置函數(shù)
81. getfillpattern() 獲取用戶圖樣設(shè)置函數(shù)
(六)、圖像函數(shù)
82. imagesize() 圖像存儲(chǔ)大小函數(shù)
83. getimage() 保存圖像函數(shù)
84. putimage() 輸出圖像函數(shù)
四、圖形和圖像函數(shù)
對(duì)許多圖形應(yīng)用程序,直線和曲線是非常有用的。但對(duì)有些圖形只能靠操作單個(gè)像素才能畫出。當(dāng)然如果沒有畫像素的功能,就無法操作直線和曲線的函數(shù)。而且通過大規(guī)模使用像素功能,整個(gè)圖形就可以保存、寫、擦除和與屏幕上的原有圖形進(jìn)行疊加。
(一) 像素函數(shù)
56. putpixel() 畫像素點(diǎn)函數(shù)
功能: 函數(shù)putpixel() 在圖形模式下屏幕上畫一個(gè)像素點(diǎn)。
用法: 函數(shù)調(diào)用方式為void putpixel(int x,int y,int color);
說明: 參數(shù)x,y為像素點(diǎn)的坐標(biāo),color是該像素點(diǎn)的顏色,它可以是顏色符號(hào)名,也可以是整型色彩值。
此函數(shù)相應(yīng)的頭文件是graphics.h
返回值: 無
例: 在屏幕上(6,8)處畫一個(gè)紅色像素點(diǎn):
putpixel(6,8,RED);
57. getpixel()返回像素色函數(shù)
功能: 函數(shù)getpixel()返回像素點(diǎn)顏色值。
用法: 該函數(shù)調(diào)用方式為int getpixel(int x,int y);
說明: 參數(shù)x,y為像素點(diǎn)坐標(biāo)。
函數(shù)的返回值可以不反映實(shí)際彩色值,這取決于調(diào)色板的設(shè)置情況(參見setpalette()函數(shù))。
這個(gè)函數(shù)相應(yīng)的頭文件為graphics.h
返回值: 返回一個(gè)像素點(diǎn)色彩值。
例: 把屏幕上(8,6)點(diǎn)的像素顏色值賦給變量color。
color=getpixel(8,6);
double atan(double x)
x 的反正切函數(shù)值tan-1x,傳回的值在 [-pi/2,pi/2] 之間
double atan2(double y, double x)
y/x 的反正切函數(shù)值tan-1(y/x),傳回的值在 [-pi, pi] 之間
arctanX的導(dǎo)數(shù)是1/(1+X2)這里的X=x/2復(fù)合函數(shù)求導(dǎo),需要先求子函數(shù)的導(dǎo)數(shù),即X'=1/2再乘上arctanX的導(dǎo)數(shù)所以所求導(dǎo)數(shù)是1/[2(1+x2/4)]
C語言中之?dāng)?shù)學(xué)函數(shù)
C語言提供了以下的數(shù)學(xué)函數(shù),要使用這些函數(shù)時(shí),在程序文件頭必須加入:
#include
編譯時(shí),必須加上參數(shù)「-lm」(表示連結(jié)至數(shù)學(xué)函式庫),例如「gcc -lm test.c」。
函數(shù)之自變量與傳回之值型別見自變量或函數(shù)前之型別宣告。
函數(shù)已經(jīng)在「math.h」或其它標(biāo)頭檔宣告過了,因此在使用時(shí)不必再加型別宣告,例如「y=sin(x);」,不用寫成「y=double sin(double x);」。
函數(shù)說明
double sin(double x)
x 的正弦函數(shù)值
double cos(double x)
x 的余弦函數(shù)值
double tan(double x)
x 的正切函數(shù)值
double asin(double x)
x 的反正弦函數(shù)值 sin-1x,x的值在 [-1,1] 之間,傳回的值在 [-p/2,p/2] 之間
double acos(double x)
x 的反余弦函數(shù)值cos-1x,x的值在 [-1,1] 之間,傳回的值在 [-p/2,p/2] 之間
double atan(double x)
x 的反正切函數(shù)值tan-1x,傳回的值在 [-p/2,p/2] 之間
double atan2(double y, double x)
y/x 的反正切函數(shù)值tan-1(y/x),傳回的值在 [-p, p]
包含頭文件 math.h
反3角函數(shù)有 acos(double),asin(double),atan(double),atan(double,double),
返回值 double 型,弧度值。轉(zhuǎn)角度要 *180.0/3.1416
例如:
#include stdio.h
#includestdlib.h
#includemath.h
int main()
{
double x=0.5;
printf("acos=%.2lf degrees\n",acos(x) * 180.0/3.1416);
printf("asin=%.2lf degrees\n",asin(x) * 180.0/3.1416);
printf("atan=%.2lf degrees\n",atan(x) * 180.0/3.1416);
printf("atan2=%.2lf degrees\n",atan2(1.0,2.0) * 180.0/3.1416);
return 0;
}
圖形和圖像函數(shù)包含在graphics.h里面
(一) 像素函數(shù)
56. putpiel() 畫像素點(diǎn)函數(shù)
57. getpixel()返回像素色函數(shù)
(二) 直線和線型函數(shù)
58. line() 畫線函數(shù)
59. lineto() 畫線函數(shù)
60. linerel() 相對(duì)畫線函數(shù)
61. setlinestyle() 設(shè)置線型函數(shù)
62. getlinesettings() 獲取線型設(shè)置函數(shù)
63. setwritemode() 設(shè)置畫線模式函數(shù)
(三)、多邊形函數(shù)
64. rectangle() 畫矩形函數(shù)
65. bar() 畫條函數(shù)
66. bar3d() 畫條塊函數(shù)
67. drawpoly() 畫多邊形函數(shù)
(四)、 圓、弧和曲線函數(shù)
68. getaspectratio()獲取縱橫比函數(shù)
69. circle()畫圓函數(shù)
70. arc() 畫圓弧函數(shù)
71. ellipse()畫橢圓弧函數(shù)
72. fillellipse() 畫橢圓區(qū)函數(shù)
73. pieslice() 畫扇區(qū)函數(shù)
74. sector() 畫橢圓扇區(qū)函數(shù)
75. getarccoords()獲取圓弧坐標(biāo)函數(shù)
(五)、 填充函數(shù)
76. setfillstyle() 設(shè)置填充圖樣和顏色函數(shù)
77. setfillpattern() 設(shè)置用戶圖樣函數(shù)
78. floodfill() 填充閉域函數(shù)
79. fillpoly() 填充多邊形函數(shù)
80. getfillsettings() 獲取填充設(shè)置函數(shù)
81. getfillpattern() 獲取用戶圖樣設(shè)置函數(shù)
(六)、圖像函數(shù)
82. imagesize() 圖像存儲(chǔ)大小函數(shù)
83. getimage() 保存圖像函數(shù)
84. putimage() 輸出圖像函數(shù)
四、圖形和圖像函數(shù)
對(duì)許多圖形應(yīng)用程序,直線和曲線是非常有用的。但對(duì)有些圖形只能靠操作單個(gè)像素才能畫出。當(dāng)然如果沒有畫像素的功能,就無法操作直線和曲線的函數(shù)。而且通過大規(guī)模使用像素功能,整個(gè)圖形就可以保存、寫、擦除和與屏幕上的原有圖形進(jìn)行疊加。
(一) 像素函數(shù)
56. putpixel() 畫像素點(diǎn)函數(shù)
功能: 函數(shù)putpixel() 在圖形模式下屏幕上畫一個(gè)像素點(diǎn)。
用法: 函數(shù)調(diào)用方式為void putpixel(int x,int y,int color);
說明: 參數(shù)x,y為像素點(diǎn)的坐標(biāo),color是該像素點(diǎn)的顏色,它可以是顏色符號(hào)名,也可以是整型色彩值。
此函數(shù)相應(yīng)的頭文件是graphics.h
返回值: 無
例: 在屏幕上(6,8)處畫一個(gè)紅色像素點(diǎn):
putpixel(6,8,RED);
57. getpixel()返回像素色函數(shù)
功能: 函數(shù)getpixel()返回像素點(diǎn)顏色值。
用法: 該函數(shù)調(diào)用方式為int getpixel(int x,int y);
說明: 參數(shù)x,y為像素點(diǎn)坐標(biāo)。
函數(shù)的返回值可以不反映實(shí)際彩色值,這取決于調(diào)色板的設(shè)置情況(參見setpalette()函數(shù))。
這個(gè)函數(shù)相應(yīng)的頭文件為graphics.h
返回值: 返回一個(gè)像素點(diǎn)色彩值。
例: 把屏幕上(8,6)點(diǎn)的像素顏色值賦給變量color。
color=getpixel(8,6);
(二) 直線和線型函數(shù)
有三個(gè)畫直線的函數(shù),即line(),lineto(),linerel()。這些直線使用整型坐標(biāo),并相對(duì)于當(dāng)前圖形視口,但不一定受視口限制,如果視口裁剪標(biāo)志clip為真,那么直線將受到視口邊緣截?cái)?;如果clip為假,即使終點(diǎn)坐標(biāo)或新的當(dāng)前位置在圖形視口或屏幕極限之外,直線截?cái)嗟狡聊粯O限。
有兩種線寬及幾種線型可供選擇,也可以自己定義線圖樣。下面分別介紹直線和線型函數(shù)。
58. line() 畫線函數(shù)
功能: 函數(shù)line()使用當(dāng)前繪圖色、線型及線寬,在給定的兩點(diǎn)間畫一直線。
用法: 該函數(shù)調(diào)用方式為void line(int startx,int starty,int endx,int endy);
說明: 參數(shù)startx,starty為起點(diǎn)坐標(biāo),endx,endy為終點(diǎn)坐標(biāo),函數(shù)調(diào)用前后,圖形狀態(tài)下屏幕光標(biāo)(一般不可見)當(dāng)前位置不改變。
此函數(shù)相應(yīng)的頭文件為graphics.h
返回值: 無
例: 見函數(shù)60.linerel()中的實(shí)例。
59. lineto() 畫線函數(shù)
功能: 函數(shù)lineto()使用當(dāng)前繪圖色、線型及線寬,從當(dāng)前位置畫一直線到指定位置。
用法: 此函數(shù)調(diào)用方式為void lineto(int x,int y);
說明: 參數(shù)x,y為指定點(diǎn)的坐標(biāo),函數(shù)調(diào)用后,當(dāng)前位置改變到指定點(diǎn)(x,y)。
該函數(shù)對(duì)應(yīng)的頭文件為graphics.h
返回值: 無
例: 見函數(shù)60.linerel()中的實(shí)例。
60.linerel() 相對(duì)畫線函數(shù)
功能: 函數(shù)linerel() 使用當(dāng)前繪圖色、線型及線寬,從當(dāng)前位置開始,按指定的水平和垂直偏移距離畫一直線。
用法: 這個(gè)函數(shù)調(diào)用方式為void linerel(int dx,int dy);
說明: 參數(shù)dx,dy分別是水平偏移距離和垂直偏移距離。
函數(shù)調(diào)用后,當(dāng)前位置變?yōu)樵黾悠凭嚯x后的位置,例如,原來的位置是(8,6),調(diào)用函數(shù)linerel(10,18)后,當(dāng)前位置為(18,24)。
返回值:無
例: 下面的程序?yàn)楫嬀€函數(shù)調(diào)用實(shí)例:
#i ncludegraphics.h
void main()
{
int driver,mode;
driver=DETECT;
mode=0;
initgraph(driver,mode,"");
setcolor(15);
line(66,66,88,88);
lineto(100,100);
linerel(36,64);
getch();
restorecrtmode();
}
61. setlinestyle() 設(shè)置線型函數(shù)
功能: setlinestyle() 為畫線函數(shù)設(shè)置當(dāng)前線型,包括線型、線圖樣和線寬。
用法: setlinestyle() 函數(shù)調(diào)用方式為void setlinestyle(int stly,unsigned pattern,int width);
說明: 參數(shù)style為線型取值,也可以用相應(yīng)名稱表示,如表1-10中所示。
參數(shù)pattern用于自定義線圖樣,它是16位(bit)字,只有當(dāng)style=USERBIT_LINE(值為1)時(shí),pattern的值才有意義,使用用戶自定義線圖樣,與圖樣中“1”位對(duì)應(yīng)的像素顯示,因此,pattern=0xFFFF,則畫實(shí)線;pattern=0x9999,則畫每隔兩個(gè)像素交替顯示的虛線,如果要畫長(zhǎng)虛線,那么pattern的值可為0xFF00和0xF00F,當(dāng)style不為USERBIT_LINE值時(shí),雖然pattern的值不起作用,但扔須為它提供一個(gè)值,一般取為0。
參數(shù)wigth用來設(shè)定線寬,其取值見表1-11,表中給出了兩個(gè)值,即1和3,實(shí)際上,線寬取值為2也是可以接受的。
若用非法參數(shù)調(diào)用setlinestyle()函數(shù),那么graphresult()會(huì)返回錯(cuò)誤代碼,并且當(dāng)前線型繼續(xù)有效。
Turbo C提供的線型與線寬定義在頭文件graphics.h中,表1-10和1-11分別列出了參數(shù)的取值與含義。
表1-10 線型
-----------------------------------------------------
名 稱 取 值 含 義
-----------------------------------------------------
SOLID_LINE 0 實(shí)線
DOTTED_LINE 1 點(diǎn)線
CNTER_LINE 2 中心線
DASHED_LINE 3 虛線
USERBIT_LINE 4 用戶自定義線型
-----------------------------------------------------
表1-11 線寬
-----------------------------------------------------------
名 稱 取 值 說 明
-----------------------------------------------------------
NORM_WIDTH(常寬) 1 一個(gè)像素寬(缺省值)
THICK_WIDTH(加寬) 3 三個(gè)像素寬
-----------------------------------------------------------
這個(gè)函數(shù)的頭文件是graphics.h
返回值: 無
例: 下面的程序顯示了BC中所提供的線型圖樣:
#i ncludegraphics.h
void main()
{
int driver,mode;
driver=DETECT;
mode=0;
initgraph(driver,mode,"");
for(i=0;i4;i++)
{
setlinestyle(i,0,1);
line(i*50,200,i*50+60,200)
}
getch();
restorecrtmode();
}
62. getlinesettings() 獲取線型設(shè)置函數(shù)
功能: 函數(shù)getlinesettings() 用當(dāng)前設(shè)置的線型、線圖樣和線寬填 寫linesettingstype型結(jié)構(gòu)。
用法: 函數(shù)調(diào)用方式為void getlinesettings(struct linesettingstype *info);
說明: 此函數(shù)調(diào)用執(zhí)行后,當(dāng)前的線型、線圖樣和線寬值被裝入info指向的結(jié)構(gòu)里,從而可從該結(jié)構(gòu)中獲得線型設(shè)置。
linesettingstype型結(jié)構(gòu)定義如下:
struct linesettingstype {
int linestyle;
unsigned upattern;
int thickness;
};
其中l(wèi)inestyle用于存放線型,線型值為表1-10中的各值之一。
upattern用為裝入用戶自定義線圖樣,這是16位字,每一位等于一個(gè)像素,如果哪個(gè)位被設(shè)置,那么該像素打開,否則關(guān)閉。
thickness為線寬值存放的變量,可參見表1-11。
getlinesettings()函數(shù)對(duì)應(yīng)的頭文件為graphics.h
返回值: 返回的線型設(shè)置存放在info指向的結(jié)構(gòu)中。
例: 把當(dāng)前線型的設(shè)置寫入info結(jié)構(gòu):
struct linesettingstype info;
getlinesettings(info);
63.setwritemode() 設(shè)置畫線模式函數(shù)
功能: 函數(shù)setwritemode() 設(shè)置畫線模式
用法: 函數(shù)調(diào)用方式為 void setwritemode()(int mode);
說明: 參數(shù)mode只有兩個(gè)取值0和1,若mode為0,則新畫的線將復(fù)蓋屏幕上原有的圖形,此為缺省畫線輸出模式。如果mode為1,那么新畫的像素點(diǎn)與原有圖形的像素點(diǎn)先進(jìn)行異或(XOR)運(yùn)算,然后輸出到屏幕上,使用這種畫線輸出模式,第二次畫同一圖形時(shí),將擦除該圖形。調(diào)用setwritemode()設(shè)置的畫線輸出模式只影響函數(shù)line(),lineto(),linerel(),recangle()和drawpoly()。
setwritemode()函數(shù)對(duì)應(yīng)的頭文件是graphics.h
返回值: 無
例: 設(shè)置畫線輸出模式為0:
setwritemode(0);
(三)、多邊形函數(shù)
對(duì)多邊形,無疑可用畫直線函數(shù)來畫出它,但直接提供畫多邊形的函數(shù)會(huì)給用戶很大方便。最常見的多邊形有矩形、矩形塊(或稱條形)、多邊形和多邊形塊,我們還把長(zhǎng)方形條塊也放到這里一起考慮,雖然它不是多邊形,但它的特例就是矩形(塊)。下面直接介紹畫多邊形的函數(shù)。
64. rectangle() 畫矩形函數(shù)
功能: 函數(shù)rectangle() 用當(dāng)前繪圖色、線型及線寬,畫一個(gè)給定左上角與右下角的矩形(正方形或長(zhǎng)方形)。
用法: 此函數(shù)調(diào)用方式為void rectangle(int left,int top,int right,int bottom);
說明: 參數(shù)left,top是左上角點(diǎn)坐標(biāo),right,bottom是右下角點(diǎn)坐標(biāo)。如果有一個(gè)以上角點(diǎn)不在當(dāng)前圖形視口內(nèi),且裁剪標(biāo)志clip設(shè)置的是真(1),那么調(diào)用該函數(shù)后,只有在圖形視口內(nèi)的矩形部分才被畫出。
這個(gè)函數(shù)對(duì)應(yīng)的頭文件為graphics.h
返回值: 無
例: 下面的程序畫一些矩形實(shí)例:
#i ncludegraphics.h
void main()
{
int driver,mode;
driver=DETECT;
mode=0;
initgrpah(driver,mode,"");
rectangle(80,80,220,200);
rectangle(140,99,180,300);
rectangle(6,6,88,88);
rectangle(168,72,260,360);
getch();
restorecrtmode();
}
65. bar() 畫條函數(shù)
功能: 函數(shù)bar()用當(dāng)前填充圖樣和填充色(注意不是給圖色)畫出一個(gè)指定上左上角與右下角的實(shí)心長(zhǎng)條形(長(zhǎng)方塊或正方塊),但沒有四條邊線)。
用法: bar()函數(shù)調(diào)用方式為void bar(int left,int top,int right,int bottom);
說明: 參數(shù)left,topright,bottom分別為左上角坐標(biāo)與右下角坐標(biāo),它們和調(diào)用函數(shù)rectangle()的情形相同,調(diào)用此函數(shù)前,可用setfillstyle()或setfillpattern()設(shè)置當(dāng)前填充圖樣和填充色。
注意此函數(shù)只畫沒有邊線的條形,如果要畫有邊線的的條形,可調(diào)用下面的函數(shù)bar3d()來畫,并將深度參數(shù)設(shè)為0,同時(shí)topflag參數(shù)要設(shè)置為真,否則該條形無頂邊線。
這 應(yīng)的頭文件為graphics.h
返回值: 無
例: 見函數(shù)bar3d()中的實(shí)例。
66.bar3d() 畫條塊函數(shù)
功能: 函數(shù)bar3d() 使用當(dāng)前繪圖色、線型及線寬畫出三維長(zhǎng)方形條塊,并用當(dāng)前填充圖樣和填 充色填充該三維條塊的表面。
用法: 此函數(shù)調(diào)用方式為void bar3d(int left,int top,int right,int bottom,int depth,int topflag);
說明: 參數(shù)left,top,right,bottom分另為左上角與右下角坐標(biāo),這與bar()函數(shù)中的一樣。參數(shù)depth為條塊的深度,以像素為單位,通常按寬度的四分之一計(jì)算。深度方向通過屏顯縱橫比調(diào)節(jié)為約45度(即這時(shí)x/y比設(shè)置為1:1)。
參數(shù)topflag相當(dāng)于一個(gè)布爾參數(shù),如果設(shè)置為1(真)那么條塊上放一頂面;若設(shè)置為0(假),則三維條形就沒有頂面,這樣可使多個(gè)三維條形疊加在一起。
要使圖形更加美觀,可利用函數(shù)floodfill()或setfillpattern()來選擇填充圖樣和填充色(參見本小節(jié)(五)填充函數(shù) )。
bar3d()函數(shù)對(duì)應(yīng)的頭文件為graphics.h
返回值: 無
例: 下面的程序畫一個(gè)條形和條塊:
#i ncludegraphics.h
void main()
{
int driver,mode;
driver=DETECT;
mode=0;
initgraph(driver,mode,"");
setfillstyle(SOLID-FILL,GREEN);
bar(60,80,220,160);
setfillstyle(SOLID-FILL,RED);
bar3d(260,180,360,240,20,1);
getch();
restorecrtmode();
}
67. drawpoly() 畫多邊形函數(shù)
功能: 函數(shù)drawpoly() 用當(dāng)前繪圖色、線型及線寬,畫一個(gè)給定若干點(diǎn)所定義的多邊形。
用法: 此函數(shù)調(diào)用方式為void drawpoly(int pnumber,int *points);
說明: 參數(shù)pnumber為多邊形的頂點(diǎn)數(shù);參數(shù)points指向整型數(shù)組,該數(shù)組中是多邊形所有頂點(diǎn)(x,y)坐標(biāo)值,即一系列整數(shù)對(duì),x坐標(biāo)值在前。顯然整型數(shù)組的維數(shù)至少為頂點(diǎn)數(shù)的2倍,在定義了多邊形所有頂點(diǎn)的數(shù)組polypoints時(shí),頂點(diǎn)數(shù)目可通過計(jì)算sizeof(polypoints)除以2倍的sizeof(int)得到,這里除以2倍的原因是每個(gè)頂點(diǎn)有兩個(gè)整數(shù)坐標(biāo)值。另外有一點(diǎn)要注意,畫一個(gè)n個(gè)頂點(diǎn)的閉合圖形,頂點(diǎn)數(shù)必須等于n+1,并且最后一點(diǎn)(第n+1)點(diǎn)坐標(biāo)必須等于第一點(diǎn)的坐標(biāo)。
drawpoly()函數(shù)對(duì)應(yīng)的頭文件為grpahics.h
返回值: 無
例: 下面的程序畫一個(gè)封閉星形圖與一個(gè)不封閉星形圖:
#i ncludegraphics.h
void main()
{
int driver,mode;
static int polypoints1[18]={100,100,110,120,100,130,120,125,140,140,130,120,
140,110,120,115,100,100};
static int polypoints2[18]={180,100,210,120,200,130,220,125,240,140,230,120,
240,110,220,115,220,110};
driver=DETECT;
mode=0;
initgraph(driver,mode,"");
drawpoly(9,polypoints1);
drawpoly(9,polypoints2);
getch();
restorecrtmode();
}
(四)、 圓、弧和曲線函數(shù)
在一個(gè)屏幕上畫得很圓的圖形到另一個(gè)屏幕上可能被壓扁或拉長(zhǎng),這是因?yàn)槊恳环N顯示卡與之相應(yīng)的顯示模式都有一個(gè)縱橫比。縱橫比是指像素的水平方向大小與垂直方向大小的比值。如VGA顯示卡由于偈素基本上是正方形,所以縱橫比為1.000。
為了保證幾何圖形基本按預(yù)計(jì)情況顯示在屏幕上,用屏顯的縱橫比來計(jì)算和糾正不同硬件及顯示卡產(chǎn)生的畸變。計(jì)算縱橫比所需要的水平方向和垂直方向的比例系數(shù)可調(diào)用函數(shù)getaspectratio()獲得。
68. getaspectratio()獲取縱橫比函數(shù)
功能: 函數(shù)getaspectratio()返回x方向和y方向的比例系數(shù),用這兩個(gè)整型值可計(jì)算某一特定屏顯的縱橫比。
用法: 此函數(shù)調(diào)用方式為void getaspectratio(int xasp,int yasp);
說明: 參數(shù)xasp指向的變量存放返回的x方向比例系數(shù);參數(shù)yasp指向的變量存放返回的y方向比例系數(shù)。通常y方向比例系數(shù)為10 000, x方向比例系數(shù)不大于10 000(這是因?yàn)榇蠖鄶?shù)屏幕像素高比寬長(zhǎng))。
注意縱橫比自動(dòng)用作下面函數(shù)arc(),circle()和pieslice()中的標(biāo)尺因子,使屏幕上圓或弧正常顯示。但用ellipse()函數(shù)畫橢圓必須調(diào)用本函數(shù)獲取縱橫比作為標(biāo)尺因子,否則不予調(diào)整。縱橫比可用于其它幾何圖形,目的是校正和顯示圖形。
getaspectratio()函數(shù)對(duì)應(yīng)的頭文件為graphics.h
返回值: 返回x與y方向比例系數(shù)分別存放在xasp和yasp所指向的變量中。
例: 下面的程序顯示縱橫比:
int xasp,yasp;
float aspectratio;
getaspectratio(xasp,yasp);
aspectratio=xasp/yasp;
printf("aspect ratio: %f",aspectratio);
69. circle()畫圓函數(shù)
功能: 函數(shù)circle()使用當(dāng)前繪圖色并以實(shí)線畫一個(gè)完整的圓。
用法:該函數(shù)調(diào)用方式為void circle(int x,int y,int radius);
說明: 參數(shù)x,y為圓心坐標(biāo),radius為圓半徑,用像素個(gè)素表示。注意,調(diào)用circle()函數(shù)畫圓時(shí)不用當(dāng)前線型。
不同于ellipse()函數(shù),只用單個(gè)半徑radius參數(shù)調(diào)用circle()函數(shù),故屏顯縱橫比可以自動(dòng)調(diào)節(jié),以產(chǎn)生正確的顯示圖。
此函數(shù)對(duì)應(yīng)的頭文件為graphics.h
返回值: 無
例: 畫六個(gè)同心圓,圓心在(100,100)。
#i ncludegraphics.h
void main()
{
int driver,mode;
driver=DETECT;
mode=0;
initgraph(driver,mode,"");
circle(100,100,10);
circle(100,100,20);
circle(100,100,30);
circle(100,100,40);
circle(100,100,50);
circle(100,100,60);
getch();
restorecrtmode();
}
70. arc() 畫圓弧函數(shù)
功能: 函數(shù)arc()使用當(dāng)前繪圖色并以實(shí)線畫一圓弧。
用法: 函數(shù)調(diào)用方式為void arc(int x,int y,int startangle,int endangle,int radius);
說明: 參數(shù)x,y為圓心坐標(biāo),startangle與endangle分別為起始角與終止角,radius為半徑。圓心坐標(biāo)和半徑以像素個(gè)數(shù)給出,起始角和終止角以度為單位,0度位于右邊,90度位于頂部,180度位于左邊,底部是270度。同往常一樣,360度與0度重合。角度按逆時(shí)針方向增加,但并不要求終止角一定比起始角大。例如指定300度和90度分別為起始角和終止角,與指定300度和450度分別為起始角和終止角可畫出相同的弧。大于360度可作為參數(shù),它將被化到0度 ̄360度范圍里。函數(shù)arc()能畫封閉圓,只要取起始角為0度,終止角為360度即可。此函數(shù)中,屏顯縱橫比可自動(dòng)調(diào)節(jié)。
arc()函數(shù)對(duì)應(yīng)的頭文件為graphics.h
返回值: 無
例: 以(200,200)為圓心,100為半徑,從0度到120度畫圓?。?/p>
#i ncludegraphics.h
void main()
{
int driver,mode;
driver=DETECT;
mode=0;
initgraph(drivwer,mode,"");
setcolor(WHITE);
arc(200,200,0,120,100);
getch();
restorecrtmode();
}
函數(shù)名: abort
功 能: 異常終止一個(gè)進(jìn)程
用 法: void abort(void);
程序例:
#include stdio.h
#include stdlib.h
int main(void)
{
printf("Calling abort()\n");
abort();
return 0; /* This is never reached */
}
函數(shù)名: abs
功 能: 求整數(shù)的絕對(duì)值
用 法: int abs(int i);
程序例:
#include stdio.h
#include math.h
int main(void)
{
int number = -1234;
printf("number: %d absolute value: %d\n", number, abs(number));
return 0;
}
函數(shù)名: absread, abswirte
功 能: 絕對(duì)磁盤扇區(qū)讀、寫數(shù)據(jù)
用 法: int absread(int drive, int nsects, int sectno, void *buffer);
int abswrite(int drive, int nsects, in tsectno, void *buffer);
程序例:
/* absread example */
#include stdio.h
#include conio.h
#include process.h
#include dos.h
int main(void)
{
int i, strt, ch_out, sector;
char buf[512];
printf("Insert a diskette into drive A and press any key\n");
getch();
sector = 0;
if (absread(0, 1, sector, buf) != 0)
{
perror("Disk problem");
exit(1);
}
printf("Read OK\n");
strt = 3;
for (i=0; i80; i++)
{
ch_out = buf[strt+i];
putchar(ch_out);
}
printf("\n");
return(0);
}
函數(shù)名: access
功 能: 確定文件的訪問權(quán)限
用 法: int access(const char *filename, int amode);
程序例:
#include stdio.h
#include io.h
int file_exists(char *filename);
int main(void)
{
printf("Does NOTEXIST.FIL exist: %s\n",
file_exists("NOTEXISTS.FIL") ? "YES" : "NO");
return 0;
}
int file_exists(char *filename)
{
return (access(filename, 0) == 0);
}
函數(shù)名: acos
功 能: 反余弦函數(shù)
用 法: double acos(double x);
程序例:
#include stdio.h
#include math.h
int main(void)
{
double result;
double x = 0.5;
result = acos(x);
printf("The arc cosine of %lf is %lf\n", x, result);
return 0;
}
函數(shù)名: allocmem
功 能: 分配DOS存儲(chǔ)段
用 法: int allocmem(unsigned size, unsigned *seg);
程序例:
#include dos.h
#include alloc.h
#include stdio.h
int main(void)
{
unsigned int size, segp;
int stat;
size = 64; /* (64 x 16) = 1024 bytes */
stat = allocmem(size, segp);
if (stat == -1)
printf("Allocated memory at segment: %x\n", segp);
else
printf("Failed: maximum number of paragraphs available is %u\n",
stat);
return 0;
}
函數(shù)名: arc
功 能: 畫一弧線
用 法: void far arc(int x, int y, int stangle, int endangle, int radius);
程序例:
#include graphics.h
#include stdlib.h
#include stdio.h
#include conio.h
int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
int midx, midy;
int stangle = 45, endangle = 135;
int radius = 100;
/* initialize graphics and local variables */
initgraph(gdriver, gmode, "");
/* read result of initialization */
errorcode = graphresult(); /* an error occurred */
if (errorcode != grOk)
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}
midx = getmaxx() / 2;
midy = getmaxy() / 2;
setcolor(getmaxcolor());
/* draw arc */
arc(midx, midy, stangle, endangle, radius);
/* clean up */
getch();
closegraph();
return 0;
}
函數(shù)名: asctime
功 能: 轉(zhuǎn)換日期和時(shí)間為ASCII碼
用 法: char *asctime(const struct tm *tblock);
程序例:
#include stdio.h
#include string.h
#include time.h
int main(void)
{
struct tm t;
char str[80];
/* sample loading of tm structure */
t.tm_sec = 1; /* Seconds */
t.tm_min = 30; /* Minutes */
t.tm_hour = 9; /* Hour */
t.tm_mday = 22; /* Day of the Month */
t.tm_mon = 11; /* Month */
t.tm_year = 56; /* Year - does not include century */
t.tm_wday = 4; /* Day of the week */
t.tm_yday = 0; /* Does not show in asctime */
t.tm_isdst = 0; /* Is Daylight SavTime; does not show in asctime */
/* converts structure to null terminated
string */
strcpy(str, asctime(t));
printf("%s\n", str);
return 0;
}
函數(shù)名: asin
功 能: 反正弦函數(shù)
用 法: double asin(double x);
程序例:
#include stdio.h
#include math.h
int main(void)
{
double result;
double x = 0.5;
result = asin(x);
printf("The arc sin of %lf is %lf\n", x, result);
return(0);
}
函數(shù)名: assert
功 能: 測(cè)試一個(gè)條件并可能使程序終止
用 法: void assert(int test);
程序例:
#include assert.h
#include stdio.h
#include stdlib.h
struct ITEM {
int key;
int value;
};
/* add item to list, make sure list is not null */
void additem(struct ITEM *itemptr) {
assert(itemptr != NULL);
/* add item to list */
}
int main(void)
{
additem(NULL);
return 0;
}
函數(shù)名: atan
功 能: 反正切函數(shù)
用 法: double atan(double x);
程序例:
#include stdio.h
#include math.h
int main(void)
{
double result;
double x = 0.5;
result = atan(x);
printf("The arc tangent of %lf is %lf\n", x, result);
return(0);
}
函數(shù)名: atan2
功 能: 計(jì)算Y/X的反正切值
用 法: double atan2(double y, double x);
程序例:
#include stdio.h
#include math.h
int main(void)
{
double result;
double x = 90.0, y = 45.0;
result = atan2(y, x);
printf("The arc tangent ratio of %lf is %lf\n", (y / x), result);
return 0;
}
函數(shù)名: atexit
功 能: 注冊(cè)終止函數(shù)
用 法: int atexit(atexit_t func);
程序例:
#include stdio.h
#include stdlib.h
void exit_fn1(void)
{
printf("Exit function #1 called\n");
}
void exit_fn2(void)
{
printf("Exit function #2 called\n");
}
int main(void)
{
/* post exit function #1 */
atexit(exit_fn1);
/* post exit function #2 */
atexit(exit_fn2);
return 0;
}
函數(shù)名: atof
功 能: 把字符串轉(zhuǎn)換成浮點(diǎn)數(shù)
用 法: double atof(const char *nptr);
程序例:
#include stdlib.h
#include stdio.h
int main(void)
{
float f;
char *str = "12345.67";
f = atof(str);
printf("string = %s float = %f\n", str, f);
return 0;
}
函數(shù)名: atoi
功 能: 把字符串轉(zhuǎn)換成長(zhǎng)整型數(shù)
用 法: int atoi(const char *nptr);
程序例:
#include stdlib.h
#include stdio.h
int main(void)
{
int n;
char *str = "12345.67";
n = atoi(str);
printf("string = %s integer = %d\n", str, n);
return 0;
}
函數(shù)名: atol
功 能: 把字符串轉(zhuǎn)換成長(zhǎng)整型數(shù)
用 法: long atol(const char *nptr);
程序例:
#include stdlib.h
#include stdio.h
int main(void)
{
long l;
char *str = "98765432";
l = atol(lstr);
printf("string = %s integer = %ld\n", str, l);
return(0);
}