![C++語言教程:第五章 函數(shù)機(jī)制_第1頁](http://file4.renrendoc.com/view/e27b43649a3819b7ed6f89a699b9b2e9/e27b43649a3819b7ed6f89a699b9b2e91.gif)
![C++語言教程:第五章 函數(shù)機(jī)制_第2頁](http://file4.renrendoc.com/view/e27b43649a3819b7ed6f89a699b9b2e9/e27b43649a3819b7ed6f89a699b9b2e92.gif)
![C++語言教程:第五章 函數(shù)機(jī)制_第3頁](http://file4.renrendoc.com/view/e27b43649a3819b7ed6f89a699b9b2e9/e27b43649a3819b7ed6f89a699b9b2e93.gif)
![C++語言教程:第五章 函數(shù)機(jī)制_第4頁](http://file4.renrendoc.com/view/e27b43649a3819b7ed6f89a699b9b2e9/e27b43649a3819b7ed6f89a699b9b2e94.gif)
![C++語言教程:第五章 函數(shù)機(jī)制_第5頁](http://file4.renrendoc.com/view/e27b43649a3819b7ed6f89a699b9b2e9/e27b43649a3819b7ed6f89a699b9b2e95.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第五章函數(shù)機(jī)制函數(shù)的引入-----目的學(xué)了“數(shù)據(jù)類型、常量、變量”,有了表達(dá)問題中各種數(shù)據(jù)的能力;學(xué)了“流程控制”,會針對各個問題,用正確的流程組合解決問題的步驟,從而形成解決問題的方法。學(xué)習(xí)函數(shù),他山之石,可以攻玉:調(diào)用已有函數(shù)intmax(intx,inty);//函數(shù)聲明voidmain(){int
a,b,m;cin>>a>>b;m=max(a,b);//函數(shù)調(diào)用
cout<<m;}intmax(intx,inty)//函數(shù)定義{intz;
if(x>y)z=x;elsez=y;returnz;}函數(shù)調(diào)用的過程:參數(shù)傳遞這里:main稱為主調(diào)函數(shù),而max稱為被調(diào)函數(shù)函數(shù)組織通過在函數(shù)中進(jìn)行函數(shù)調(diào)用來擴(kuò)展運(yùn)行的規(guī)模,層層疊疊的函數(shù)構(gòu)成樹結(jié)構(gòu)main()fun2()fun1()fun3()fun1_1()fun2_1()fun2_2()
函數(shù)調(diào)用層次關(guān)系:樹結(jié)構(gòu)main()函數(shù),是程序執(zhí)行的入口,它可以調(diào)用其他函數(shù)。而其他一般函數(shù)既可以調(diào)用也可以被調(diào)用。函數(shù)嵌套調(diào)用的示意圖:
5.1學(xué)會調(diào)用函數(shù)哪些函數(shù)可調(diào)用?c++程序通??梢哉{(diào)用標(biāo)準(zhǔn)c++庫中的大量函數(shù)。這些函數(shù)完成一些基本的服務(wù),如輸入和輸出等,同時也為一些經(jīng)常使用的操作提供了高效的實(shí)現(xiàn)代碼。兩種形式:靜態(tài)庫(.lib)和動態(tài)庫(.dll)庫函數(shù)常用的庫函數(shù)控制臺輸入輸出函數(shù),如getchar()、getline()字符串函數(shù),如strlen()、strcpy()數(shù)學(xué)函數(shù),如sqrt()、pow()隨機(jī)函數(shù),如srand()、rand()標(biāo)準(zhǔn)c++庫函數(shù)的詳細(xì)信息以及一些類定義均在其對應(yīng)的頭文件進(jìn)行了說明,以幫助程序員更好地使用標(biāo)準(zhǔn)c++庫。主要標(biāo)準(zhǔn)c++庫頭文件如下所示:<cmath>———用于計(jì)算常用的數(shù)學(xué)函數(shù)<iostream>---用于聲明處理標(biāo)準(zhǔn)流的iostreams對象<ctime>----用于在幾種不同的時間和日期格式間進(jìn)行轉(zhuǎn)換<fstream>---用于定義處理外部文件的幾個iostream模板類<iomapip>----用于聲明一個帶有參數(shù)的iostreams控制器
在我們現(xiàn)有的水平上,自編程序中若想使用標(biāo)準(zhǔn)的C++庫函數(shù),則只要包含相應(yīng)的頭文件即可。例:抽獎程序。編程實(shí)現(xiàn):隨機(jī)生成一個0~99的整數(shù),然后從鍵盤輸入一個0~99之間的數(shù),如果兩數(shù)相等(概率為1%),就表示中獎了。
intrand():返回一隨機(jī)數(shù)值,范圍在0至RAND_MAX間voidsrand(unsignedint):用來設(shè)置rand()產(chǎn)生隨機(jī)數(shù)時的隨機(jī)數(shù)種子。#include<iostream>#include<cstdlib>#include<ctime>usingnamespacestd;voidmain(){
srand((unsigned)time(NULL)); intx=rand(); intnum=(int)(99.0*x/(RAND_MAX)); intmynum; cout<<"請輸入一個0~99的整數(shù):"; cin>>mynum; if(mynum==num) cout<<"恭喜!您中獎了!"<<endl; else cout<<"本次中獎號碼為"<<num<<",謝謝您,歡迎下次光臨。"<<endl;}cstdlib頭文件中包含了提供了一些常用函數(shù)與符號常量的聲明。哪些函數(shù)可調(diào)用?GUI(GraphicUserInterface圖形用戶界面),一切都是畫出來的VCL可視化控件庫(VisualComponentLibrary)mfc微軟基礎(chǔ)類(MicrosoftFoundationClasses),實(shí)際上是微軟提供的,用于在C++環(huán)境下編寫windows應(yīng)用程序的一個框架和引擎VCL庫函數(shù)視窗版的加法計(jì)算器voidCMyDlg::OnOK(){ //TODO:Addextravalidationhere UpdateData(true); m_he=m_js1+m_js2; UpdateData(false);}哪些函數(shù)可調(diào)用?API(ApplicationProgrammingInterface應(yīng)用編程接口)程序員通過API來控制WindowsOpenGL:(OpenGraphicsLibrary)專業(yè)的圖形程序接口,是一個功能強(qiáng)大,調(diào)用方便的底層圖形庫,它是一個跨平臺與何種操作系統(tǒng)無關(guān))三維圖形軟件包。OpenGL可以與VisualC++緊密接口。操作系統(tǒng)API函數(shù)調(diào)用者必須能“看得見”被調(diào)用者將被調(diào)用的函數(shù)定義寫在調(diào)用者前面intmax(intx,inty)//max函數(shù)定義{……}voidmain(){……c=max(a,b);//調(diào)用max函數(shù)
……}調(diào)用者必須能“看得見”被調(diào)用者將被調(diào)用的函數(shù)聲明寫在當(dāng)前代碼前面intmax(intx,inty);//max函數(shù)聲明voidmain(){……
intmax(intx,inty);
//max函數(shù)聲明
c=max(a,b);//調(diào)用max函數(shù)
……}注意:這種方式一定要有被調(diào)函數(shù)的定義存在!調(diào)用者必須能“看得見”被調(diào)用者使用頭文件,函數(shù)可以統(tǒng)一在一個頭文件中聲明,代碼中需要使用這些函數(shù),只需通過“#include”語句包含這個頭文件,就可以讓編譯器找到函數(shù)。
#include<cmath>usingnamespacestd;void
main(){
inta=4,b,c;
b=sqrt(a);
//sqrt函數(shù)求a的平方根
c=pow(a,3);
//pow函數(shù)求a的指定次冪值}調(diào)用者必須傳遞正確的參數(shù)給被調(diào)用者函數(shù)的目的是實(shí)現(xiàn)某個特定功能,當(dāng)我們調(diào)用它時,我們一般需要給它一些數(shù)據(jù),這些數(shù)據(jù)可能是讓它直接處理,也可能是輔助它實(shí)現(xiàn)具體的功能。函數(shù)要不要外部傳給它數(shù)據(jù),要什么類型的數(shù)據(jù),要多少數(shù)據(jù),由函數(shù)本身決定,而非調(diào)用者決定。參數(shù)是調(diào)用者給出去的,被調(diào)用者接來過使用的數(shù)據(jù)如何得到函數(shù)的運(yùn)行結(jié)果?void類型的函數(shù):void是“無類型”之意,這就相當(dāng)于這個函數(shù)沒有返回結(jié)果。如:voidsrand(unsigned
int
);
srand(…);非void類型的函數(shù):函數(shù)必須返回一個值
如:
intmax(inta,intb)
c=max(a,b);終于明白了?5.2自定義函數(shù)自定義函數(shù)返回類型
函數(shù)名(函數(shù)參數(shù)定義){
函數(shù)體(return
結(jié)果;)}函數(shù)體用一對{}包括;里面就是函數(shù)用以實(shí)現(xiàn)功能的代碼。命名規(guī)則和變量命名一樣函數(shù)的返回值通過return語句來傳遞。return語句的一般格式為:
return
表達(dá)式;intmax(intx,inty){
intz;
if(x>=y)z=x;
elsez=y;
returnz;}返回類型非void型函數(shù):
函數(shù)體中必須有return語句。main函數(shù)例外。表達(dá)式值的類型與函數(shù)類型最好一致。void型函數(shù):函數(shù)體中return語句可以不出現(xiàn)。若出現(xiàn),則不能帶表達(dá)式,且意味著程序需要在指定位置退出。Notice:voidoutputStr();voidmain(){ outputStr();}voidoutputStr(){ cout<<"第1行"<<endl;
return; cout<<"第2行"<<endl; cout<<"第3行"<<endl;}voidoutputStr();voidmain(){ outputStr();}voidoutputStr(){ cout<<"第1行"<<endl; cout<<"第2行"<<endl; cout<<"第3行"<<endl;}結(jié)合流程控制語句和return語句,我們可以控制一個函數(shù)在合適的位置返回,并可返回合適的值。int
max(inta,
intb){
if(a>b)
returna;
else
returnb;}return(a>b)?a:b;函數(shù)參數(shù)定義多個參數(shù)之間用逗號隔開,而不是分號;最后不必以分號結(jié)束。
intmax(intx;int
y)//errorintmax(intx,inty;)//error注意:兩個或多個參數(shù)類型相同時,并不能同時聲明!
intmax(intx,y);//errorintmax(intx,inty){
intz;
if(x>=y)z=x;
elsez=y;
returnz;}例1:自定義函數(shù),實(shí)現(xiàn)求n!。并在主程序中利用其求1!+2!+3!+…+12!。intjiecheng(intn){
intjieguo=1;
for(inti=1;i<=n;i++) jieguo*=i;
returnjieguo;}voidmain(){ intsum=0;
for(inti=1;i<=12;i++) { sum+=jiecheng(i); } cout<<sum<<endl;}
例2:已知五邊形的各條邊的長度,計(jì)算其面積
計(jì)算多邊形面積,可將多邊形分解成若干個三角形abcdefgS1S2S3
xyz
計(jì)算三角形面積的公式如下:用前面所學(xué)的知識實(shí)現(xiàn):voidmain(){floata,b,c,d,e,f,g,p1,p2,p3,s1,s2,s3,s;cin>>a>>b>>c>>d>>e>>f>>g;p1=(a+b+c)/2;s1=sqrt(p1*(p1-a)*(p1-b)*(p1-c));p2=(c+d+e)/2;s2=sqrt(p2*(p2-c)*(p2-d)*(p2-e));p3=(e+f+g)/2;s3=sqrt(p3*(p3-e)*(p3-f)*(p3-g));s=s1+s2+s3;cout<<s<<endl;}如果定義一個函數(shù),專門求解已知三條邊長時,三角形的面積呢?floatarea(floatx,floaty,floatz){floatc=(x+y+z)/2;floats=sqrt(c*(c-x)*(c-y)*(c-z));returns;}在main函數(shù)中就可利用area
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 冷庫加班入貨合同范例
- 動物寄養(yǎng)合同范例
- 書面流轉(zhuǎn)合同范本
- 農(nóng)家購房合同范本
- 沈陽商用房屋出租合同范本
- 個體用工合同范本
- 農(nóng)村院子賣房合同范本
- 物品采購合同范本
- 代蓋公章合同范例
- 企業(yè)監(jiān)理裝修合同范本
- 心肺復(fù)蘇 視頻
- 《性激素臨床應(yīng)用》課件
- 項(xiàng)目式學(xué)習(xí)指導(dǎo)手冊:每個教師都能做PBL
- c語言 譚浩強(qiáng) 課件
- 保育師(四級)理論知識考核要素細(xì)目表
- 洗滌塔操作說明
- 故障處理記錄和總結(jié)分析表
- 火龍罐技術(shù)課件
- 奧迪TT汽車說明書
- 撤銷因私出國(境)登記備案國家工作人員通知書
- (21)-9.1《藝術(shù)學(xué)概論》第九章第一節(jié) 藝術(shù)批評的含義與性質(zhì)、原
評論
0/150
提交評論