C語(yǔ)言程序設(shè)計(jì)41_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì)41_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì)41_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì)41_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì)41_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

會(huì)計(jì)學(xué)1C語(yǔ)言程序設(shè)計(jì)41第1頁(yè)/共25頁(yè)§4.1概述C語(yǔ)言是面向過程的模塊化語(yǔ)言。所謂模塊化,就是把一個(gè)較大的程序分解成若干個(gè)小模塊,每個(gè)模塊用來實(shí)現(xiàn)一個(gè)特定的功能,使程序的結(jié)構(gòu)清晰,便于程序人員分工。在程序設(shè)計(jì)中,常將一些常用的功能模塊編寫成函數(shù),放在公共函數(shù)庫(kù)中供大家隨時(shí)調(diào)用。善于利用函數(shù),以減少重復(fù)編寫程序段的工作量。第2頁(yè)/共25頁(yè)[例4.1]函數(shù)調(diào)用的簡(jiǎn)單例子#include<stdio.h>voidprintstar(){printf(“**********\n”);}voidprint_message(){printf(“Howdoyoudo!\n”);}voidmain(){printstar();print_message();printstar();}第3頁(yè)/共25頁(yè)使用函數(shù)的優(yōu)點(diǎn): (1)使程序變得更簡(jiǎn)短而清晰;

(2)提高了代碼的重用性;

(有利于程序維護(hù);

(4)可以提高程序開發(fā)的效率。第4頁(yè)/共25頁(yè)說明: (1)一個(gè)源程序文件由一個(gè)或多個(gè)函數(shù)以及其他有關(guān)內(nèi)容(如命令行、數(shù)據(jù)定義等)組成。一個(gè)源程序文件是一個(gè)編譯單位,即以源文件為單位進(jìn)行編譯,而不是以函數(shù)為單位進(jìn)行編譯。

(2)一個(gè)C程序由一個(gè)或多個(gè)源程序文件組成。對(duì)較大的程序,一般不希望把所有內(nèi)容全放在一個(gè)文件中,而是將它們放在若干個(gè)源程序中,再由若干個(gè)源程序文件組成。一個(gè)源程序文件可以為多個(gè)C程序共用。 第5頁(yè)/共25頁(yè)(3)一個(gè)C程序有且只能有一個(gè)名為main()的主函數(shù),程序的的執(zhí)行是從main函數(shù)開始的。如果在main函數(shù)中有調(diào)用其他函數(shù),在調(diào)用后流程返回到main函數(shù),在main函數(shù)中結(jié)束整個(gè)程序的運(yùn)行。(4)所有函數(shù)都是平行的,即在定義函數(shù)時(shí)是分別進(jìn)行的,是相互獨(dú)立的。一個(gè)函數(shù)并不從屬于另一個(gè)函數(shù),即函數(shù)不能嵌套定義。函數(shù)間可以相互調(diào)用,但不能調(diào)用main函數(shù)。main函數(shù)是系統(tǒng)調(diào)用的。第6頁(yè)/共25頁(yè)(5)從用戶使用的角度看,函數(shù)有兩種。①標(biāo)準(zhǔn)函數(shù)。即庫(kù)函數(shù),由系統(tǒng)提供,可直接使用。②用戶自己定義的函數(shù)。用以解決用戶專門需要。(6)從函數(shù)的形式看,函數(shù)分兩類。①無參函數(shù)。在調(diào)用函數(shù)時(shí),主調(diào)函數(shù)不向被調(diào)用函數(shù)傳遞數(shù)據(jù)。②有參函數(shù)。在調(diào)用函數(shù)時(shí),主調(diào)函數(shù)通過參數(shù)向被調(diào)用函數(shù)傳遞數(shù)據(jù)。(7)函數(shù)可分為有返回值函數(shù)和無返回值函數(shù)。①有返回值函數(shù)。執(zhí)行后向主調(diào)函數(shù)返回一個(gè)執(zhí)行結(jié)果。②無返回值函數(shù)。執(zhí)行后不向主調(diào)函數(shù)返回函數(shù)值。第7頁(yè)/共25頁(yè)§4.2函數(shù)的定義與調(diào)用 1.定義無參函數(shù)的一般形式為: 類型標(biāo)識(shí)符函數(shù)名() {

聲明部分 語(yǔ)句部分

}

在定義函數(shù)時(shí)要用“類型標(biāo)識(shí)符”指定函數(shù)值的類型,即函數(shù)返回值的類型。函數(shù)名是用戶定義的標(biāo)識(shí)符,后面的括號(hào)不能缺少。4.2.1函數(shù)的定義例如:voidprintstar(){printf(“**********\n”);}函數(shù)頭函數(shù)體對(duì)于無返回值的函數(shù),應(yīng)將函數(shù)類型定義為”void”,即空類型。這樣,系統(tǒng)就保證不使函數(shù)帶回任何值,即禁止調(diào)用函數(shù)中使用被調(diào)用函數(shù)的返回值。此時(shí)在函數(shù)體中不得出現(xiàn)return語(yǔ)句。第8頁(yè)/共25頁(yè)2.定義有參函數(shù)的一般形式為:類型標(biāo)識(shí)符函數(shù)名(形參表列){

聲明部分 語(yǔ)句部分}形參是變量,必須在形參表中給出形參的類型說明。例如:intmax(intx,inty){ intz; z=x>y?x:y; return(z);}§4.2函數(shù)的定義與調(diào)用4.2.1函數(shù)的定義第9頁(yè)/共25頁(yè)3.空函數(shù)的一般形式為:類型說明符函數(shù)名() { }§4.2函數(shù)的定義與調(diào)用4.2.1函數(shù)的定義如果函數(shù)定義中省略了返回類型,則缺省為int。第10頁(yè)/共25頁(yè)1.函數(shù)的調(diào)用:§4.2函數(shù)的定義與調(diào)用4.2.2函數(shù)的調(diào)用、參數(shù)及傳遞方式

函數(shù)調(diào)用的一般形式為 函數(shù)名(實(shí)參表列);

說明:(1)實(shí)參與形參個(gè)數(shù)相等,類型一致,按順序一一對(duì)應(yīng)。實(shí)參表求值順序,因系統(tǒng)而定。(VC++自右向左)(2)如果是調(diào)用無參函數(shù),則“實(shí)參表列”可以沒有,但括號(hào)不能省略。(3)如果實(shí)參表列包含多個(gè)實(shí)參,則各參數(shù)間用逗號(hào)隔開。第11頁(yè)/共25頁(yè)#include<stdio.h>voidmain(){ intf(inta,intb); inti=2,p; p=f(i,++i); printf(“%d\n”,p);}intf(inta,intb){ intc; if(a>b)c=1; elseif(a==b)c=0; elsec=-1; returnc;}[例4.4]實(shí)參求值的順序練習(xí):教材p130,二,2第12頁(yè)/共25頁(yè)2.函數(shù)的參數(shù):§4.2函數(shù)的定義與調(diào)用4.2.2函數(shù)的調(diào)用、參數(shù)及傳遞方式形式參數(shù):定義函數(shù)時(shí)函數(shù)名后面括號(hào)中的變量名表。實(shí)際參數(shù):調(diào)用函數(shù)時(shí)函數(shù)名后面括號(hào)中的變量名表或?qū)?yīng)的表達(dá)式表。第13頁(yè)/共25頁(yè)#include<stdio.h>main(){inta=4,b=5,c=2,max;if(a>b){if(a>c)max=a;elsemax=c;}else{if(b>c)max=b;elsemax=c;}printf(“%d”,max2);}[例4.2]求a,b,c3個(gè)數(shù)中的最大者。#include<stdio.h>main(){inta=4,b=5,c=2intmax1,max2;max1=max(a,b);max2=max(max1,c);printf(“%d”,max2);}intmax(intx,inty){intz;if(x>y)z=x;elsez=y;return(z);}第14頁(yè)/共25頁(yè)3.函數(shù)參數(shù)的傳遞方式:§4.2函數(shù)的定義與調(diào)用4.2.2函數(shù)的調(diào)用、參數(shù)及傳遞方式例交換兩個(gè)數(shù)#include<stdio.h>main(){intx=7,y=11;swap(x,y);printf("x=%d,y=%d\n",x,y);}swap(inta,intb){inttemp;temp=a;a=b;b=temp;printf("a=%d,b=%d\n",a,b);}第15頁(yè)/共25頁(yè)關(guān)于形參與實(shí)參的說明: (1)在定義函數(shù)中指定的形參,在未出現(xiàn)函數(shù)調(diào)用時(shí),它們并不占內(nèi)存中的存儲(chǔ)單元。只有在發(fā)生函數(shù)調(diào)用時(shí),形參才被分配內(nèi)存單元。調(diào)用結(jié)束時(shí)內(nèi)存釋放。

(2)實(shí)參可以是常量、變量或表達(dá)式。但要求它們有確定的值。在調(diào)用時(shí)將實(shí)參的值賦給形參。

(3)在被定義的函數(shù)中,必須指定形參的類型。

第16頁(yè)/共25頁(yè)關(guān)于形參與實(shí)參的說明:

(4)實(shí)參與形參的類型應(yīng)相同或賦值兼容。

(5)實(shí)參向形參的數(shù)據(jù)傳遞是“值傳遞”,單向傳遞,只由實(shí)參傳給形參,而不能由形參傳回來給實(shí)參。在內(nèi)存中,實(shí)參單元與形參單元是不同的單元。在調(diào)用函數(shù)時(shí),給形參分配存儲(chǔ)單元,并將實(shí)參對(duì)應(yīng)的值傳遞給形參,調(diào)用結(jié)束,形參釋放,實(shí)參仍保留并維持原值。因此,在執(zhí)行一個(gè)被調(diào)用函數(shù)時(shí),形參的值如果發(fā)生改變,并不會(huì)改變主調(diào)函數(shù)的實(shí)參的值。第17頁(yè)/共25頁(yè)返回語(yǔ)句形式:

return(表達(dá)式)

或return表達(dá)式或return;功能:使程序控制從被調(diào)函數(shù)返回到主調(diào)函數(shù)中,同時(shí)把返回值帶給主調(diào)函數(shù)。說明:1.函數(shù)至多可以返回一個(gè)值,不能返回多個(gè)值;2.返回值的數(shù)據(jù)類型必須與函數(shù)中返回值的數(shù)據(jù)類型匹配。如果類型不一致,則以函數(shù)類型為準(zhǔn)。對(duì)數(shù)值型數(shù)據(jù),可以自動(dòng)進(jìn)行類型轉(zhuǎn)換。即函數(shù)類型決定返回值的類型。3.當(dāng)遇到return語(yǔ)句時(shí),函數(shù)執(zhí)行將終止。程序控制流程將立即返回調(diào)用函數(shù)。

§4.2函數(shù)的定義與調(diào)用4.2.3函數(shù)的返回值第18頁(yè)/共25頁(yè)[例4.3]返回值類型與函數(shù)類型不同#include<stdio.h>voidmain(){ intmax(flaotx,floaty); floata,b; intc; scanf(“%f,%f”,&a,&b); c=max(a,b); printf(“Maxis%d\n”,c);}max(floatx,floaty){ floatz; z=x>y?x:y; returnz;}第19頁(yè)/共25頁(yè)§4.2函數(shù)的定義與調(diào)用4.2.4函數(shù)聲明的作用函數(shù)聲明的一般形式:

函數(shù)類型函數(shù)名(形參類型[形參名],…);或函數(shù)類型函數(shù)名()

函數(shù)聲明的作用:告訴編譯系統(tǒng)函數(shù)類型、參數(shù)個(gè)數(shù)及類型,以便檢驗(yàn)。注意:函數(shù)定義與函數(shù)聲明的區(qū)別!

第20頁(yè)/共25頁(yè)§4.2函數(shù)的定義與調(diào)用4.2.4函數(shù)聲明的作用在一個(gè)函數(shù)中調(diào)用另一個(gè)函數(shù)需要具備的條件:

(1)必須是已經(jīng)存在的函數(shù)(庫(kù)函數(shù)或用戶自己定義的函數(shù))。

(2)如果使用庫(kù)函數(shù),應(yīng)在本文件開頭用#include命令將調(diào)用有關(guān)庫(kù)函數(shù)時(shí)所需用到的信息“包含”到本文件中去。

(3)如果使用用戶自己定義的函數(shù),而該函數(shù)的位置在調(diào)用它的函數(shù)(即主調(diào)函數(shù))的后面(在同一個(gè)文件中),應(yīng)該在主調(diào)函數(shù)中對(duì)被調(diào)用的函數(shù)作聲明。第21頁(yè)/共25頁(yè)說明: (1)如果被調(diào)用函數(shù)的定義出現(xiàn)在主調(diào)函數(shù)之前,可以不必加以聲明。

(2)如果已在文件的開頭(在所有函數(shù)之前),已對(duì)本文件中所調(diào)用的函數(shù)進(jìn)行了聲明,則在各函數(shù)中不必對(duì)其所調(diào)用的函數(shù)再作聲明?!?.2函數(shù)的定義與調(diào)用4.2.4函數(shù)聲明的作用第22頁(yè)/共25頁(yè)[例4.5]對(duì)被調(diào)用的函數(shù)作聲明#include<stdio.h>floatadd(floatx,floaty){ floatz; z=x+y; returnz;}voidmain(){ floata,b,c; scanf(“%f,%f”,&a,&b); c=add(a,b); printf(“sumis%f\n”,c);}#include<stdio.h>voidmain(){ floata,b,c; scanf(“

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論