函數(shù)與模塊化程序設(shè)計(jì)基礎(chǔ)PPT課件_第1頁(yè)
函數(shù)與模塊化程序設(shè)計(jì)基礎(chǔ)PPT課件_第2頁(yè)
函數(shù)與模塊化程序設(shè)計(jì)基礎(chǔ)PPT課件_第3頁(yè)
函數(shù)與模塊化程序設(shè)計(jì)基礎(chǔ)PPT課件_第4頁(yè)
函數(shù)與模塊化程序設(shè)計(jì)基礎(chǔ)PPT課件_第5頁(yè)
已閱讀5頁(yè),還剩39頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 4.可對(duì)字符量進(jìn)行的運(yùn)算 由于字符量具有數(shù)值,在機(jī)器內(nèi)也是以整型常量的形式存放,因此字符可參與任何整數(shù)運(yùn)算。 (1)利用算術(shù)運(yùn)算實(shí)現(xiàn)大小寫(xiě)字符的轉(zhuǎn)換 如:A+3265+32a b-3298-32B (2)利用算術(shù)運(yùn)算實(shí)現(xiàn)字符與整數(shù)值之間的互換 如:9-057-489 4+04+48524 (3)字符常量也可以進(jìn)行關(guān)系運(yùn)算 如:ab 09(比較的是ASCII碼) (4)字符常量也可以進(jìn)行邏輯運(yùn)算 如:a&b 0&1第1頁(yè)/共44頁(yè)1、字符輸入函數(shù)函數(shù)返回值類(lèi)型函數(shù)的名稱(chēng)無(wú)參數(shù)從標(biāo)準(zhǔn)輸入設(shè)備(一般為鍵盤(pán))讀入一個(gè)字符,返回該字符的ASCII碼值,并且將敲入的字符“回顯”到屏幕上。

2、6.3字符輸入與輸出函數(shù)第2頁(yè)/共44頁(yè)#include /*說(shuō)明函數(shù)getchar的原型包含在哪個(gè)文件中*/void main()int a; char b; a=getchar(); b=getchar(); printf(a=%cta=%dtb=%ctb=%dn,a,a,b,b); 從鍵盤(pán)輸入字符, 該字符的ASCII編碼值賦給a第3頁(yè)/共44頁(yè)程序運(yùn)行情況如下:程序運(yùn)行情況如下:13 a=1a=49b=3b=51 第4頁(yè)/共44頁(yè)調(diào)用函數(shù)getchar時(shí),程序執(zhí)行被中斷,等待用戶(hù)從鍵盤(pán)輸入數(shù)據(jù)。當(dāng)用戶(hù)鍵入字符并敲回車(chē)鍵以后,程序繼續(xù)運(yùn)行。若用戶(hù)輸入字符后未按回車(chē)鍵,則鍵入的內(nèi)容一直保留

3、在鍵盤(pán)緩沖區(qū)中,只有用戶(hù)鍵入回車(chē)鍵后,字符輸入函數(shù)getchar才進(jìn)行處理。 函數(shù)getchar將回車(chē)鍵作為一個(gè)字符讀入。如果程序中有兩個(gè)以上函數(shù)getchar時(shí),應(yīng)該一次性輸入所需字符,最后再按回車(chē)鍵,如上例所示。無(wú)論輸入的是英文字母或標(biāo)點(diǎn)符號(hào)還是數(shù)字,都是作為字符輸入 。第5頁(yè)/共44頁(yè)函數(shù)返回值類(lèi)型函數(shù)的名稱(chēng)函數(shù)的參數(shù)向標(biāo)準(zhǔn)輸出設(shè)備(一般為顯示器)輸出一個(gè)字符,并返回輸出字符的ASCII碼值。2、字符輸出函數(shù)第6頁(yè)/共44頁(yè)#include 程序運(yùn)行結(jié)果為:ABBCmain( ) int a=65; char b=B; putchar(a); putchar(65+1); putchar

4、(b); putchar(B+1); 包含函數(shù)putchar的頭文件第7頁(yè)/共44頁(yè) #include stdio.h void main() char ch;int num=0; ch=getchar();【例6-3】 統(tǒng)計(jì)從鍵盤(pán)輸入的一行字符的個(gè)數(shù)(以回車(chē)鍵作為輸入結(jié)束標(biāo)記)。while(ch!=n) 判斷是否輸入結(jié)束判斷是否輸入結(jié)束num+; ch=getchar(); 第五章第五章 5.1 while語(yǔ)句語(yǔ)句printf(num=%dn,num); 第8頁(yè)/共44頁(yè) 【例例6-46-4】 用用do-whiledo-while語(yǔ)句編寫(xiě)程序統(tǒng)計(jì)從鍵盤(pán)語(yǔ)句編寫(xiě)程序統(tǒng)計(jì)從鍵盤(pán)輸入的一行非空字符

5、的個(gè)數(shù)(以回車(chē)鍵作為輸入輸入的一行非空字符的個(gè)數(shù)(以回車(chē)鍵作為輸入結(jié)束標(biāo)記)。結(jié)束標(biāo)記)。 #include stdio.hvoid main()char ch; int num=0; ch=getchar(); do num+; ch= getchar(); while(ch!=n); printf(num=%dn,num); 第五章第五章 5.2 do-while語(yǔ)句語(yǔ)句第9頁(yè)/共44頁(yè)第第7 7章章 函數(shù)與模塊化程序函數(shù)與模塊化程序設(shè)計(jì)基礎(chǔ)設(shè)計(jì)基礎(chǔ)7.1 7.1 概述概述7.2 7.2 函數(shù)的定義函數(shù)的定義7.3 7.3 函數(shù)的調(diào)用函數(shù)的調(diào)用7.4 7.4 變量的作用域與存儲(chǔ)特性變量的作

6、用域與存儲(chǔ)特性第10頁(yè)/共44頁(yè)7.1 7.1 概述概述一一. 模塊與函數(shù)模塊與函數(shù)1. 結(jié)構(gòu)化程序設(shè)計(jì) C語(yǔ)言是結(jié)構(gòu)化的程序設(shè)計(jì)語(yǔ)言。一種設(shè)計(jì)程序的技術(shù)。通常采用自頂向下逐步求精的設(shè)計(jì)方法和單入口單出口控制結(jié)構(gòu)。2.“自頂向下”的模塊化程序設(shè)計(jì)方法將一個(gè)大問(wèn)題按層次分解成多個(gè)方便解決小問(wèn)題的模塊的設(shè)計(jì)思想.第11頁(yè)/共44頁(yè)3. 功能模塊 求解較小問(wèn)題的算法和程序稱(chēng)作“功能模塊”, 各功能模塊可以先單獨(dú)設(shè)計(jì),然后將求解所有子問(wèn)題的模塊組合成求解原問(wèn)題的程序。 主控模塊主控模塊模塊模塊1_1模塊模塊1_n模塊模塊2_1模塊模塊2_n模塊模塊n_1模塊模塊n_n模塊模塊1模塊模塊2模塊模塊n由功

7、能模塊組成程序的結(jié)構(gòu)圖第12頁(yè)/共44頁(yè)4. 函數(shù): 完成相對(duì)獨(dú)立功能的程序例7-1,輸入年月日,計(jì)算出該日為該年的第幾天。 分析:(1)判斷年份是否為閏年。年份有閏年與平年之分,兩者的區(qū)別在于閏年的二月為29天,平年的二月為28天。因此,給定一個(gè)年份,首先應(yīng)確定其是否是閏年。(2)求月份對(duì)應(yīng)的天數(shù)。月份不同,其對(duì)應(yīng)的天數(shù)不同,1、3、5、7、8、10、12月每月為31天,4、6、9、11月每月為30天,2月根據(jù)所在年份是否為閏年來(lái)確定。(3)求總天數(shù)。分為經(jīng)歷完整的月份天數(shù)與經(jīng)歷不完整的月份天數(shù)。(4)輸出數(shù)據(jù)。年月日及相應(yīng)的天數(shù)。第13頁(yè)/共44頁(yè)程序?qū)崿F(xiàn):(1)判斷閏年。int leap

8、(int year)int lp; lp=(year%4=0&year%100!=0|year%400=0)?1:0;return lp;主控模塊主控模塊判斷閏年判斷閏年求某月的天數(shù)求某月的天數(shù)輸輸 出出輸輸 入入求總天數(shù)求總天數(shù)程序模塊結(jié)構(gòu)圖程序模塊結(jié)構(gòu)圖第14頁(yè)/共44頁(yè)(2)求某月的天數(shù)。/*函數(shù)month_days調(diào)用函數(shù)leap判斷year是否為閏年*/int month_days(int year,int month) int ds,d; switch(month) case 1: case 3: case 5: case 7: case 8: case 10: case

9、12:d=31;break; case 2:d=leap(year)?29:28;break; /*若為閏年,d賦值29,否則賦值28*/ default:d=30; return d; 第15頁(yè)/共44頁(yè)(3)求天數(shù)和。/*函數(shù)days調(diào)用函數(shù)month_days,求各月份對(duì)應(yīng)的天數(shù)*/int days(int year,int month,int day)int i,ds=0; for (i=1;i0?1:(x=0?0:-1);return y;/*返回函數(shù)值返回函數(shù)值*/第25頁(yè)/共44頁(yè)(3) return語(yǔ)句的表示形式如下:語(yǔ)句的表示形式如下:return 表達(dá)式;表達(dá)式;或或 re

10、turn(表達(dá)式);(表達(dá)式);符號(hào)函數(shù)的另一種定義形式:符號(hào)函數(shù)的另一種定義形式:int sign(int x) /*形式參數(shù)類(lèi)型說(shuō)明與參數(shù)列表與函數(shù)名一起說(shuō)明形式參數(shù)類(lèi)型說(shuō)明與參數(shù)列表與函數(shù)名一起說(shuō)明*/ return y=x0?1: (x=0?0:-1);/*返回一個(gè)復(fù)雜的表達(dá)式的值返回一個(gè)復(fù)雜的表達(dá)式的值*/當(dāng)函數(shù)類(lèi)型為當(dāng)函數(shù)類(lèi)型為float型并且型并且return語(yǔ)句缺省時(shí),調(diào)用出錯(cuò)。語(yǔ)句缺省時(shí),調(diào)用出錯(cuò)。當(dāng)函數(shù)類(lèi)型為當(dāng)函數(shù)類(lèi)型為int型并且型并且return語(yǔ)句的表達(dá)式缺省或語(yǔ)句的表達(dá)式缺省或return語(yǔ)句缺省時(shí),返回不確定的值(在語(yǔ)句缺省時(shí),返回不確定的值(在TC2中返回值為中

11、返回值為0)第26頁(yè)/共44頁(yè)例例7-3:寫(xiě)出以下程序的運(yùn)行結(jié)果。:寫(xiě)出以下程序的運(yùn)行結(jié)果。max( ) /*函數(shù)類(lèi)型缺省,為函數(shù)類(lèi)型缺省,為int型,型,return語(yǔ)句缺省語(yǔ)句缺省*/ min( ) /*函數(shù)類(lèi)型缺省,函數(shù)類(lèi)型缺省,return語(yǔ)句缺省表達(dá)式語(yǔ)句缺省表達(dá)式*/return ;main( )printf(%d,%dn,max(),min()););程序運(yùn)行結(jié)果為:程序運(yùn)行結(jié)果為:-256,-256 /*返回值不確定,返回值不確定,TC2開(kāi)發(fā)環(huán)境中返回值為開(kāi)發(fā)環(huán)境中返回值為0*/若函數(shù)若函數(shù)max與函數(shù)與函數(shù)min的類(lèi)型為的類(lèi)型為float,則返回值為:,則返回值為:Float

12、ing point error: Domain.Abnormal program termination第27頁(yè)/共44頁(yè)在具有多個(gè)函數(shù)的在具有多個(gè)函數(shù)的C程序中,主函數(shù)出現(xiàn)的位置并不重程序中,主函數(shù)出現(xiàn)的位置并不重要。為閱讀方便,可將主函數(shù)要。為閱讀方便,可將主函數(shù)main放在最前面。為了避免放在最前面。為了避免過(guò)多的函數(shù)聲明語(yǔ)句,習(xí)慣上將主函數(shù)放在所有函數(shù)之后。過(guò)多的函數(shù)聲明語(yǔ)句,習(xí)慣上將主函數(shù)放在所有函數(shù)之后。不論主函數(shù)放在什么位置,一旦啟動(dòng)該程序,總是從主函不論主函數(shù)放在什么位置,一旦啟動(dòng)該程序,總是從主函數(shù)開(kāi)始執(zhí)行,并且最終在主函數(shù)結(jié)束整個(gè)程序的執(zhí)行。數(shù)開(kāi)始執(zhí)行,并且最終在主函數(shù)結(jié)束

13、整個(gè)程序的執(zhí)行。3. 函數(shù)函數(shù)main一個(gè)一個(gè)C語(yǔ)言程序至少包含一個(gè)函數(shù),并且必須有且只能有語(yǔ)言程序至少包含一個(gè)函數(shù),并且必須有且只能有一個(gè)名為一個(gè)名為main的函數(shù),稱(chēng)之為主函數(shù)。的函數(shù),稱(chēng)之為主函數(shù)。在包含多個(gè)函數(shù)的程序中,不僅可以由主函數(shù)調(diào)用其它函在包含多個(gè)函數(shù)的程序中,不僅可以由主函數(shù)調(diào)用其它函數(shù),還可以由被調(diào)函數(shù)調(diào)用其它函數(shù),但任何函數(shù)都不能調(diào)數(shù),還可以由被調(diào)函數(shù)調(diào)用其它函數(shù),但任何函數(shù)都不能調(diào)用主函數(shù)。用主函數(shù)。通常主函數(shù)的類(lèi)型定義為通常主函數(shù)的類(lèi)型定義為void(在(在TC2中可省略函數(shù)中可省略函數(shù)main的類(lèi)型說(shuō)明)。的類(lèi)型說(shuō)明)。第28頁(yè)/共44頁(yè)7.3 函數(shù)的調(diào)用函數(shù)的調(diào)用

14、在在C語(yǔ)言的一般函數(shù)體中,可以包含對(duì)其它函數(shù)的調(diào)用,語(yǔ)言的一般函數(shù)體中,可以包含對(duì)其它函數(shù)的調(diào)用,稱(chēng)為函數(shù)的嵌套調(diào)用,甚至包含對(duì)自身的調(diào)用,稱(chēng)為函數(shù)的稱(chēng)為函數(shù)的嵌套調(diào)用,甚至包含對(duì)自身的調(diào)用,稱(chēng)為函數(shù)的遞歸調(diào)用。遞歸調(diào)用。一個(gè)函數(shù)一旦被定義,就可在程序的其它函數(shù)中使用它,這一個(gè)函數(shù)一旦被定義,就可在程序的其它函數(shù)中使用它,這個(gè)過(guò)程稱(chēng)為函數(shù)調(diào)用。個(gè)過(guò)程稱(chēng)為函數(shù)調(diào)用。一一. 函數(shù)的一般調(diào)用與聲明函數(shù)的一般調(diào)用與聲明函數(shù)名函數(shù)名(實(shí)際參數(shù)列表)實(shí)際參數(shù)列表)1. 函數(shù)調(diào)用形式函數(shù)調(diào)用形式函數(shù)調(diào)用的一般形式:函數(shù)調(diào)用的一般形式:第29頁(yè)/共44頁(yè)實(shí)際參數(shù)也稱(chēng)為實(shí)在參數(shù),簡(jiǎn)稱(chēng)為實(shí)參,實(shí)際參數(shù)之間以實(shí)際參

15、數(shù)也稱(chēng)為實(shí)在參數(shù),簡(jiǎn)稱(chēng)為實(shí)參,實(shí)際參數(shù)之間以“,”分隔。分隔。函數(shù)調(diào)用時(shí),實(shí)參與形參應(yīng)保持個(gè)數(shù)、次序及類(lèi)型的一致性,函數(shù)調(diào)用時(shí),實(shí)參與形參應(yīng)保持個(gè)數(shù)、次序及類(lèi)型的一致性,以確保實(shí)參與形參之間數(shù)據(jù)的正確傳遞。以確保實(shí)參與形參之間數(shù)據(jù)的正確傳遞。實(shí)際參數(shù)一般為表達(dá)式,可以是常量、變量(調(diào)用時(shí)必須有實(shí)際參數(shù)一般為表達(dá)式,可以是常量、變量(調(diào)用時(shí)必須有確定的值或確定的地址)。確定的值或確定的地址)。形式參數(shù)必須為變量。形式參數(shù)必須為變量。當(dāng)實(shí)際參數(shù)的個(gè)數(shù)、次序、類(lèi)型與對(duì)應(yīng)形式參數(shù)的個(gè)數(shù)、次當(dāng)實(shí)際參數(shù)的個(gè)數(shù)、次序、類(lèi)型與對(duì)應(yīng)形式參數(shù)的個(gè)數(shù)、次序、類(lèi)型不一致時(shí),系統(tǒng)并不提示錯(cuò)誤,后果卻難以預(yù)測(cè)。序、類(lèi)型不

16、一致時(shí),系統(tǒng)并不提示錯(cuò)誤,后果卻難以預(yù)測(cè)。注意注意第30頁(yè)/共44頁(yè)C語(yǔ)言中函數(shù)調(diào)用的三種形式語(yǔ)言中函數(shù)調(diào)用的三種形式:函數(shù)語(yǔ)句調(diào)用函數(shù)語(yǔ)句調(diào)用函數(shù)表達(dá)式調(diào)用函數(shù)表達(dá)式調(diào)用函數(shù)參數(shù)調(diào)用函數(shù)參數(shù)調(diào)用在函數(shù)調(diào)用后加在函數(shù)調(diào)用后加“;”,構(gòu)成一個(gè)語(yǔ)句。,構(gòu)成一個(gè)語(yǔ)句。調(diào)用函數(shù)的目的可能是執(zhí)行一個(gè)動(dòng)作或調(diào)用函數(shù)的目的可能是執(zhí)行一個(gè)動(dòng)作或完成特定的功能。完成特定的功能。大多數(shù)函數(shù)的調(diào)用形式。大多數(shù)函數(shù)的調(diào)用形式。被調(diào)用函數(shù)執(zhí)行的結(jié)果為調(diào)用函數(shù)提供被調(diào)用函數(shù)執(zhí)行的結(jié)果為調(diào)用函數(shù)提供一個(gè)值,除非一個(gè)函數(shù)的類(lèi)型說(shuō)明為一個(gè)值,除非一個(gè)函數(shù)的類(lèi)型說(shuō)明為void型。型。調(diào)用函數(shù)通過(guò)表達(dá)式接收值。調(diào)用函數(shù)通過(guò)表達(dá)式接

17、收值。被調(diào)函數(shù)作為某個(gè)函數(shù)的一個(gè)參數(shù)。被調(diào)函數(shù)作為某個(gè)函數(shù)的一個(gè)參數(shù)。第31頁(yè)/共44頁(yè)例例7-4, 函數(shù)語(yǔ)句調(diào)用與函數(shù)表達(dá)式調(diào)用。函數(shù)語(yǔ)句調(diào)用與函數(shù)表達(dá)式調(diào)用。#include void main()()printf(nk1=%d,printf(n%k2););程序運(yùn)行結(jié)果為:程序運(yùn)行結(jié)果為:k2k1=3第32頁(yè)/共44頁(yè)void main( ) /*主函數(shù)中采用函數(shù)參數(shù)調(diào)用形式調(diào)用函數(shù)主函數(shù)中采用函數(shù)參數(shù)調(diào)用形式調(diào)用函數(shù)max2*/ int x,y,z,m; scanf(%d,%d,%d,&x,&y,&z); printf(max=%dn,max2(max2(x,y

18、),z); / *內(nèi)層函數(shù)內(nèi)層函數(shù)max2的值作為外層函數(shù)的值作為外層函數(shù)max2的實(shí)參,整個(gè)函數(shù)的實(shí)參,整個(gè)函數(shù)max2的值的值又作函數(shù)又作函數(shù)printf的的實(shí)參的的實(shí)參*/ 例例7-5:函數(shù)參數(shù)調(diào)用形式調(diào)用函數(shù):函數(shù)參數(shù)調(diào)用形式調(diào)用函數(shù)max2:int max2(int a,int b) /*求兩個(gè)數(shù)中較大者求兩個(gè)數(shù)中較大者*/ int y; y=(ab)?a:b; return y;第33頁(yè)/共44頁(yè)2. 函數(shù)聲明函數(shù)聲明調(diào)用用戶(hù)自定義函數(shù)時(shí),一般調(diào)用函數(shù)和被調(diào)用函數(shù)應(yīng)在同調(diào)用用戶(hù)自定義函數(shù)時(shí),一般調(diào)用函數(shù)和被調(diào)用函數(shù)應(yīng)在同一個(gè)文件中,在調(diào)用函數(shù)中對(duì)被調(diào)用函數(shù)返回值的類(lèi)型、函數(shù)一個(gè)文件

19、中,在調(diào)用函數(shù)中對(duì)被調(diào)用函數(shù)返回值的類(lèi)型、函數(shù)名稱(chēng)、函數(shù)形式參數(shù)的類(lèi)型進(jìn)行說(shuō)明,這種說(shuō)明稱(chēng)為函數(shù)聲明。名稱(chēng)、函數(shù)形式參數(shù)的類(lèi)型進(jìn)行說(shuō)明,這種說(shuō)明稱(chēng)為函數(shù)聲明。函數(shù)聲明的一般形式如下:函數(shù)聲明的一般形式如下:類(lèi)型名類(lèi)型名 函數(shù)名(類(lèi)型函數(shù)名(類(lèi)型1 形參形參1,類(lèi)型,類(lèi)型2 形參形參2,類(lèi)型,類(lèi)型n 形參形參n););或或類(lèi)型名類(lèi)型名 函數(shù)名(類(lèi)型函數(shù)名(類(lèi)型1,類(lèi)型,類(lèi)型2,類(lèi)型,類(lèi)型n););或或類(lèi)型名類(lèi)型名 函數(shù)名();函數(shù)名();函數(shù)聲明是以語(yǔ)句形式出現(xiàn)的,因此其后有語(yǔ)句結(jié)束標(biāo)記函數(shù)聲明是以語(yǔ)句形式出現(xiàn)的,因此其后有語(yǔ)句結(jié)束標(biāo)記“;”。若函數(shù)定義放在主調(diào)函數(shù)之前,遵循先定義后調(diào)用原則若函

20、數(shù)定義放在主調(diào)函數(shù)之前,遵循先定義后調(diào)用原則,函數(shù)函數(shù)聲明可以省略。聲明可以省略。第34頁(yè)/共44頁(yè)例例7-6: 編程求兩個(gè)整數(shù)的階乘之和。編程求兩個(gè)整數(shù)的階乘之和。long fac(n) /*定義函數(shù)定義函數(shù)fac,其功能是求,其功能是求n!*/int n;int i; long r=1;/*注意注意r的初始化值為的初始化值為1*/ for(i=1;i=n;i+)r=r*i; return r;#include void main()int m1,m2; long result; long fac(int); /*在主函數(shù)中聲明后面定義的函數(shù)在主函數(shù)中聲明后面定義的函數(shù)fac*/ scanf

21、(%d,%d,&m1,&m2); result=fac(m1)+fac(m2); printf(%d!+%d!=%ldn, m1,m2,result);第35頁(yè)/共44頁(yè)二二. 形參與實(shí)參形參與實(shí)參形式參數(shù)形式參數(shù)(簡(jiǎn)稱(chēng)形參簡(jiǎn)稱(chēng)形參)定義函數(shù)使用的參數(shù)定義函數(shù)使用的參數(shù)實(shí)際參數(shù)實(shí)際參數(shù)(簡(jiǎn)稱(chēng)實(shí)參簡(jiǎn)稱(chēng)實(shí)參)調(diào)用函數(shù)使用的參數(shù)調(diào)用函數(shù)使用的參數(shù)C語(yǔ)言中,采用函數(shù)之間的參數(shù)傳遞方式或用全局變量共享數(shù)語(yǔ)言中,采用函數(shù)之間的參數(shù)傳遞方式或用全局變量共享數(shù)據(jù)方式,使一個(gè)函數(shù)能對(duì)不同的數(shù)據(jù)進(jìn)行相同功能的處理。據(jù)方式,使一個(gè)函數(shù)能對(duì)不同的數(shù)據(jù)進(jìn)行相同功能的處理。C語(yǔ)言函數(shù)的參數(shù)傳遞均采用單向值

22、傳遞方式(或稱(chēng)復(fù)制方式)。語(yǔ)言函數(shù)的參數(shù)傳遞均采用單向值傳遞方式(或稱(chēng)復(fù)制方式)。單向值傳遞方式是指在函數(shù)調(diào)用時(shí),將實(shí)參之值傳遞給對(duì)應(yīng)單向值傳遞方式是指在函數(shù)調(diào)用時(shí),將實(shí)參之值傳遞給對(duì)應(yīng)的形式參數(shù),使形參具有與實(shí)參相同的值。的形式參數(shù),使形參具有與實(shí)參相同的值。當(dāng)實(shí)際參數(shù)是變量的地址值、指針常量或指針變量時(shí),實(shí)際當(dāng)實(shí)際參數(shù)是變量的地址值、指針常量或指針變量時(shí),實(shí)際參數(shù)傳遞給形式參數(shù)的是地址值,也同樣是單向值傳遞方式。參數(shù)傳遞給形式參數(shù)的是地址值,也同樣是單向值傳遞方式。第36頁(yè)/共44頁(yè)例例7-77-7,求方程,求方程ax2+bx+c=0(a 0)的實(shí)數(shù)根。)的實(shí)數(shù)根。 分析:分析:(1)一元

23、二次方程的實(shí)根的條件是:)一元二次方程的實(shí)根的條件是: 。(2)定義函數(shù))定義函數(shù)dict來(lái)判斷數(shù)方程是否有實(shí)根,有實(shí)根則返回函來(lái)判斷數(shù)方程是否有實(shí)根,有實(shí)根則返回函數(shù)值數(shù)值1,否則返回函數(shù)值,否則返回函數(shù)值0;然后在主函數(shù)中求方程的實(shí)根。;然后在主函數(shù)中求方程的實(shí)根。 240bac #include #include void main() float a,b,c,x1,x2,d,dt; int dict(float,float,float); /*聲明函數(shù)聲明函數(shù)dict及形式參數(shù)類(lèi)型及形式參數(shù)類(lèi)型*/ printf(Input a,b,c:); scanf(% %f,% %f,% %f,

24、& &a,& &b,& &c);/*輸入方程輸入方程*/ d=dict(a,b,c);/*調(diào)用函數(shù)調(diào)用函數(shù)dict,傳遞實(shí)參,傳遞實(shí)參a,b,c*/ dt=b*b-4*a*c; /* ,可以用一個(gè)函數(shù)實(shí)現(xiàn)可以用一個(gè)函數(shù)實(shí)現(xiàn)*/ 24bac 第37頁(yè)/共44頁(yè)if(d) x1=(-b+sqrt(dt)/(2*a);); x2=(-b-sqrt(dt)/(2*a);); printf(實(shí)根實(shí)根x1=%f,x2=%fn,x1,x2);else printf(無(wú)實(shí)數(shù)根無(wú)實(shí)數(shù)根!n);); int dict(a,b,c) /*定義函數(shù)定義函數(shù)dict及形參

25、說(shuō)明及形參說(shuō)明*/float a,b,c;float d; d=b*b-4*a*c; /*可以用一個(gè)函數(shù)實(shí)現(xiàn)可以用一個(gè)函數(shù)實(shí)現(xiàn)*/ if(d=0) return(1); else return(0); 第38頁(yè)/共44頁(yè)函數(shù)main函數(shù)dictabcabc實(shí)參與形參數(shù)據(jù)傳遞通過(guò)函數(shù)調(diào)用,將實(shí)參的值傳遞給形參通過(guò)函數(shù)調(diào)用,將實(shí)參的值傳遞給形參. 函數(shù)調(diào)用時(shí),系統(tǒng)對(duì)參數(shù)的處理步驟為:函數(shù)調(diào)用時(shí),系統(tǒng)對(duì)參數(shù)的處理步驟為:(1)計(jì)算各實(shí)參的值,將實(shí)參值壓入形參棧中,然后執(zhí)行函數(shù)體。)計(jì)算各實(shí)參的值,將實(shí)參值壓入形參棧中,然后執(zhí)行函數(shù)體。(2)當(dāng)函數(shù)執(zhí)行完返回時(shí),形參從棧頂彈出(取走)。)當(dāng)函數(shù)執(zhí)行完返

26、回時(shí),形參從棧頂彈出(取走)。 第39頁(yè)/共44頁(yè)有關(guān)實(shí)參與形參的幾點(diǎn)說(shuō)明:有關(guān)實(shí)參與形參的幾點(diǎn)說(shuō)明:(1)在函數(shù)定義中指定的形參,未調(diào)用時(shí),它們不占用存儲(chǔ)單元。)在函數(shù)定義中指定的形參,未調(diào)用時(shí),它們不占用存儲(chǔ)單元。只有調(diào)用該函數(shù)時(shí),形參才被分配空間,函數(shù)調(diào)用結(jié)束后,形參只有調(diào)用該函數(shù)時(shí),形參才被分配空間,函數(shù)調(diào)用結(jié)束后,形參所占的存儲(chǔ)單元被釋放。所占的存儲(chǔ)單元被釋放。(2)實(shí)參為表達(dá)式。函數(shù)調(diào)用時(shí),先計(jì)算表達(dá)式的值,然后將值)實(shí)參為表達(dá)式。函數(shù)調(diào)用時(shí),先計(jì)算表達(dá)式的值,然后將值傳遞給形參。常量、變量、函數(shù)值都可看成是表達(dá)式的特殊形式。傳遞給形參。常量、變量、函數(shù)值都可看成是表達(dá)式的特殊形式

27、。(3)定義函數(shù)時(shí),形參的排列沒(méi)有次序要求,但對(duì)形參列表中每)定義函數(shù)時(shí),形參的排列沒(méi)有次序要求,但對(duì)形參列表中每個(gè)參數(shù)要進(jìn)行說(shuō)明。調(diào)用函數(shù)時(shí),實(shí)參類(lèi)型、個(gè)數(shù)及排列次序應(yīng)個(gè)參數(shù)要進(jìn)行說(shuō)明。調(diào)用函數(shù)時(shí),實(shí)參類(lèi)型、個(gè)數(shù)及排列次序應(yīng)與形參一一對(duì)應(yīng)。若類(lèi)型不一致,必須在參數(shù)前加上強(qiáng)制轉(zhuǎn)換符,與形參一一對(duì)應(yīng)。若類(lèi)型不一致,必須在參數(shù)前加上強(qiáng)制轉(zhuǎn)換符,否則會(huì)發(fā)生否則會(huì)發(fā)生“類(lèi)型不匹配類(lèi)型不匹配”的錯(cuò)誤。的錯(cuò)誤。(4)實(shí)參與形參的數(shù)據(jù)傳遞為單向傳遞,只可由實(shí)參向形參傳)實(shí)參與形參的數(shù)據(jù)傳遞為單向傳遞,只可由實(shí)參向形參傳遞,不能由形參傳回實(shí)參。實(shí)參與形參處在不同的函數(shù)中,作用遞,不能由形參傳回實(shí)參。實(shí)參與形參處在不同的函數(shù)中,作用的區(qū)域不同,即使實(shí)參與形參同名,也是不同的變量。的區(qū)域不同,即使實(shí)參與形參同名,也是不同的變量。

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論