




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(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)也是以整型常量的形式存放,因此字符可參與(cny)任何整數(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è)第一頁(yè),共45頁(yè)。1、字符輸入(shr)函數(shù)函數(shù)(hnsh)返回值類型函數(shù)的名稱無(wú)參數(shù)從標(biāo)準(zhǔn)輸入設(shè)備(一般為鍵盤(pán))讀入一個(gè)字符,返回該字符的
2、ASCII碼值,并且將敲入的字符“回顯”到屏幕上。6.3字符輸入與輸出函數(shù)第2頁(yè)/共44頁(yè)第二頁(yè),共45頁(yè)。#include /*說(shuō)明函數(shù)(hnsh)getchar的原型包含在哪個(gè)文件中*/void main()int a; char b; a=getchar(); b=getchar(); printf(a=%cta=%dtb=%ctb=%dn,a,a,b,b); 從鍵盤(pán)輸入字符(z f), 該字符(z f)的ASCII編碼值賦給a第3頁(yè)/共44頁(yè)第三頁(yè),共45頁(yè)。程序運(yùn)行情況程序運(yùn)行情況(qngkung)(qngkung)如下:如下:1313 a=1 a=1a=49a=49b=3b=3b=
3、51 b=51 第4頁(yè)/共44頁(yè)第四頁(yè),共45頁(yè)。調(diào)用函數(shù)getchar時(shí),程序執(zhí)行被中斷,等待用戶從鍵盤(pán)輸入數(shù)據(jù)(shj)。當(dāng)用戶鍵入字符并敲回車鍵以后,程序繼續(xù)運(yùn)行。若用戶輸入字符后未按回車鍵,則鍵入的內(nèi)容一直保留在鍵盤(pán)緩沖區(qū)中,只有用戶鍵入回車鍵后,字符輸入函數(shù)getchar才進(jìn)行處理。 函數(shù)(hnsh)getchar將回車鍵作為一個(gè)字符讀入。如果程序中有兩個(gè)以上函數(shù)(hnsh)getchar時(shí),應(yīng)該一次性輸入所需字符,最后再按回車鍵,如上例所示。無(wú)論輸入的是英文字母或標(biāo)點(diǎn)符號(hào)還是數(shù)字,都是作為字符輸入 。第5頁(yè)/共44頁(yè)第五頁(yè),共45頁(yè)。函數(shù)(hnsh)返回值類型函數(shù)(hnsh)的名稱
4、函數(shù)的參數(shù)向標(biāo)準(zhǔn)輸出設(shè)備(一般為顯示器)輸出一個(gè)字符,并返回輸出字符的ASCII碼值。2、字符輸出函數(shù)第6頁(yè)/共44頁(yè)第六頁(yè),共45頁(yè)。#include 程序運(yùn)行結(jié)果(ji gu)為:ABBCmain( ) int a=65; char b=B; putchar(a); putchar(65+1); putchar(b); putchar(B+1); 包含(bohn)函數(shù)putchar的頭文件第7頁(yè)/共44頁(yè)第七頁(yè),共45頁(yè)。 #include stdio.h void main() char ch;int num=0; ch=getchar();【例6-3】 統(tǒng)計(jì)從鍵盤(pán)輸入的一行(yxng)
5、字符的個(gè)數(shù)(以回車鍵作為輸入結(jié)束標(biāo)記)。while(ch!=n) 判斷判斷(pndun)是否是否輸入結(jié)束輸入結(jié)束num+; ch=getchar(); 第五章第五章 5.1 while語(yǔ)句語(yǔ)句printf(num=%dn,num); 第8頁(yè)/共44頁(yè)第八頁(yè),共45頁(yè)。 【例【例6-46-4】 用用do-whiledo-while語(yǔ)句編寫(xiě)程序統(tǒng)計(jì)從鍵盤(pán)語(yǔ)句編寫(xiě)程序統(tǒng)計(jì)從鍵盤(pán)輸 入 的 一 行 非 空 字 符 的 個(gè) 數(shù) ( 以 回 車 鍵 作 為輸 入 的 一 行 非 空 字 符 的 個(gè) 數(shù) ( 以 回 車 鍵 作 為(zuwi)(zuwi)輸入結(jié)束標(biāo)記)。輸入結(jié)束標(biāo)記)。 #include s
6、tdio.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è)第九頁(yè),共45頁(yè)。第第7 7章章 函數(shù)函數(shù)(hnsh)(hnsh)與模與模塊化程序設(shè)計(jì)基礎(chǔ)塊化程序設(shè)計(jì)基礎(chǔ)7.1 7.1 概述概述(i sh)(i sh)7.2 7.2 函數(shù)函數(shù)(hnsh)(hnsh)的的定義定義7.3 7.3 函數(shù)的調(diào)用函數(shù)的調(diào)用7.4 7.4 變量的作用域與存儲(chǔ)特性變量的作用域與存儲(chǔ)特性第10頁(yè)
7、/共44頁(yè)第十頁(yè),共45頁(yè)。7.1 7.1 概述概述(i sh)(i sh)一一. 模塊模塊(m kui)與函數(shù)與函數(shù)1. 結(jié)構(gòu)化程序設(shè)計(jì)(shj) 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è)第十一頁(yè),共45頁(yè)。3. 功能模塊 求解較小問(wèn)題的算法和程序稱作“功能模塊”, 各功能模塊可以先單獨(dú)設(shè)計(jì)(shj),然后將求解所有子問(wèn)題的模塊組合成求解原問(wèn)題的程序。 主控模塊主控模塊模塊模塊1_1模塊模塊1_n模塊模塊2_1模
8、塊模塊2_n模塊模塊n_1模塊模塊n_n模塊模塊1模塊模塊2模塊模塊n由功能模塊組成(z chn)程序的結(jié)構(gòu)圖第12頁(yè)/共44頁(yè)第十二頁(yè),共45頁(yè)。4. 函數(shù): 完成相對(duì)(xingdu)獨(dú)立功能的程序例7-1,輸入(shr)年月日,計(jì)算出該日為該年的第幾天。 分析:(1)判斷年份是否為閏年。年份有閏年與平年之分,兩者的區(qū)別在于閏年的二月為29天,平年的二月為28天。因此,給定一個(gè)年份,首先應(yīng)確定(qudng)其是否是閏年。(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)確定(qudng
9、)。(3)求總天數(shù)。分為經(jīng)歷完整的月份天數(shù)與經(jīng)歷不完整的月份天數(shù)。(4)輸出數(shù)據(jù)。年月日及相應(yīng)的天數(shù)。第13頁(yè)/共44頁(yè)第十三頁(yè),共45頁(yè)。程序?qū)崿F(xiàn):(1)判斷(pndun)閏年。int leap(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è)第十四頁(yè),共45頁(yè)。(2)求某月的天數(shù)。/*函數(shù)(hnsh)month_days調(diào)用函數(shù)(hnsh)leap判斷year
10、是否為閏年*/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 12:d=31;break; case 2:d=leap(year)?29:28;break; /*若為閏年,d賦值29,否則賦值28*/ default:d=30; return d; 第15頁(yè)/共44頁(yè)第十五頁(yè),共45頁(yè)。(3)求天數(shù)和。/*函數(shù)(hnsh)days調(diào)用函數(shù)(hnsh)month_days,求各月份對(duì)應(yīng)的天數(shù)*/int days(int
11、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è)第二十五頁(yè),共45頁(yè)。(3) return語(yǔ)句的表示語(yǔ)句的表示(biosh)形式如下:形式如下:return 表達(dá)式;表達(dá)式;或或 return(表達(dá)式);(表達(dá)式);符號(hào)函數(shù)的另一種定義符號(hào)函數(shù)的另一種定義(dngy)形式:形式:int sign(int x) /*形式參數(shù)類型說(shuō)明與參數(shù)列表與函數(shù)形式參數(shù)類型說(shuō)明與參數(shù)列表與函數(shù)(hnsh)名一起說(shuō)明名一起說(shuō)明*/ return y=x0?1: (x=0?0:-
12、1);/*返回一個(gè)復(fù)雜的表達(dá)式的值返回一個(gè)復(fù)雜的表達(dá)式的值*/當(dāng)函數(shù)類型為當(dāng)函數(shù)類型為float型并且型并且return語(yǔ)句缺省時(shí),調(diào)用出錯(cuò)。語(yǔ)句缺省時(shí),調(diào)用出錯(cuò)。當(dāng)函數(shù)類型為當(dāng)函數(shù)類型為int型并且型并且return語(yǔ)句的表達(dá)式缺省或語(yǔ)句的表達(dá)式缺省或return語(yǔ)語(yǔ)句缺省時(shí),返回不確定的值(在句缺省時(shí),返回不確定的值(在TC2中返回值為中返回值為0)第26頁(yè)/共44頁(yè)第二十六頁(yè),共45頁(yè)。例例7-3:寫(xiě)出以下:寫(xiě)出以下(yxi)程序的運(yùn)行結(jié)果。程序的運(yùn)行結(jié)果。max( ) /*函數(shù)類型缺省,為函數(shù)類型缺省,為int型,型,return語(yǔ)句缺省語(yǔ)句缺省*/ min( ) /*函數(shù)類型缺省,函
13、數(shù)類型缺省,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ù)(hnsh)max與函數(shù)與函數(shù)(hnsh)min的類型為的類型為float,則返,則返回值為:回值為:Floating point error: Domain.Abnormal program termination第27頁(yè)/共44頁(yè)第二十七頁(yè),共45頁(yè)。在具有多個(gè)函數(shù)的在具有多個(gè)函數(shù)的C程序中,主函數(shù)出現(xiàn)的位
14、置并不重要。程序中,主函數(shù)出現(xiàn)的位置并不重要。為閱讀方便,可將主函數(shù)為閱讀方便,可將主函數(shù)main放在最前面。為了避免過(guò)多的放在最前面。為了避免過(guò)多的函數(shù)聲明函數(shù)聲明(shngmng)語(yǔ)句,習(xí)慣上將主函數(shù)放在所有函數(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é)束整個(gè)程序的執(zhí)行。3. 函數(shù)函數(shù)(hnsh)main一個(gè)一個(gè)C語(yǔ)言程序至少包含一個(gè)函數(shù),并且語(yǔ)言程序至少包含一個(gè)函數(shù),并且(bngqi)必須有且只能有必須有且只能
15、有一個(gè)名為一個(gè)名為main的函數(shù),稱之為主函數(shù)。的函數(shù),稱之為主函數(shù)。在包含多個(gè)函數(shù)的程序中,不僅可以由主函數(shù)調(diào)用其它函在包含多個(gè)函數(shù)的程序中,不僅可以由主函數(shù)調(diào)用其它函數(shù),還可以由被調(diào)函數(shù)調(diào)用其它函數(shù),但任何函數(shù)都不能數(shù),還可以由被調(diào)函數(shù)調(diào)用其它函數(shù),但任何函數(shù)都不能調(diào)用主函數(shù)。調(diào)用主函數(shù)。通常主函數(shù)的類型定義為通常主函數(shù)的類型定義為void(在(在TC2中可省略函數(shù)中可省略函數(shù)main的類的類型說(shuō)明)。型說(shuō)明)。第28頁(yè)/共44頁(yè)第二十八頁(yè),共45頁(yè)。7.3 函數(shù)函數(shù)(hnsh)的調(diào)的調(diào)用用在在C語(yǔ)言的一般語(yǔ)言的一般(ybn)函數(shù)體中,可以包含對(duì)其它函數(shù)的調(diào)用,函數(shù)體中,可以包含對(duì)其它函數(shù)
16、的調(diào)用,稱為函數(shù)的嵌套調(diào)用,甚至包含對(duì)自身的調(diào)用,稱為函數(shù)的遞歸稱為函數(shù)的嵌套調(diào)用,甚至包含對(duì)自身的調(diào)用,稱為函數(shù)的遞歸調(diào)用。調(diào)用。一個(gè)函數(shù)一旦被定義,就可在程序的其它函數(shù)中使用一個(gè)函數(shù)一旦被定義,就可在程序的其它函數(shù)中使用(shyng)它,它,這個(gè)過(guò)程稱為函數(shù)調(diào)用。這個(gè)過(guò)程稱為函數(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è)第二十九頁(yè),共45頁(yè)。實(shí)際參數(shù)也稱為實(shí)在參數(shù),簡(jiǎn)稱實(shí)際參數(shù)也稱為實(shí)在參數(shù),簡(jiǎn)稱(jinchng)為實(shí)參,實(shí)際參數(shù)之間為實(shí)參,實(shí)際參數(shù)
17、之間以以“,”分隔。分隔。函數(shù)調(diào)用時(shí),實(shí)參與形參應(yīng)保持個(gè)數(shù)、次序及類型的一致性,以確函數(shù)調(diào)用時(shí),實(shí)參與形參應(yīng)保持個(gè)數(shù)、次序及類型的一致性,以確保保(qubo)實(shí)參與形參之間數(shù)據(jù)的正確傳遞。實(shí)參與形參之間數(shù)據(jù)的正確傳遞。實(shí)際參數(shù)一般為表達(dá)式,可以實(shí)際參數(shù)一般為表達(dá)式,可以(ky)是常量、變量(調(diào)用時(shí)必須有是常量、變量(調(diào)用時(shí)必須有確定的值或確定的地址)。確定的值或確定的地址)。形式參數(shù)必須為變量。形式參數(shù)必須為變量。當(dāng)實(shí)際參數(shù)的個(gè)數(shù)、次序、類型與對(duì)應(yīng)形式參數(shù)的個(gè)數(shù)、次序、類型當(dāng)實(shí)際參數(shù)的個(gè)數(shù)、次序、類型與對(duì)應(yīng)形式參數(shù)的個(gè)數(shù)、次序、類型不一致時(shí),系統(tǒng)并不提示錯(cuò)誤,后果卻難以預(yù)測(cè)。不一致時(shí),系統(tǒng)并不
18、提示錯(cuò)誤,后果卻難以預(yù)測(cè)。注意注意第30頁(yè)/共44頁(yè)第三十頁(yè),共45頁(yè)。C語(yǔ)言中函數(shù)調(diào)用的三種語(yǔ)言中函數(shù)調(diào)用的三種(sn zhn)形式形式:函數(shù)函數(shù)(hnsh)語(yǔ)句調(diào)用語(yǔ)句調(diào)用函數(shù)函數(shù)(hnsh)表表達(dá)式調(diào)用達(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ù)的類型說(shuō)明為個(gè)值,除非一個(gè)函數(shù)的類型說(shuō)明為void型。型。調(diào)
19、用函數(shù)通過(guò)表達(dá)式接收值。調(diào)用函數(shù)通過(guò)表達(dá)式接收值。被調(diào)函數(shù)作為某個(gè)函數(shù)的一個(gè)參數(shù)。被調(diào)函數(shù)作為某個(gè)函數(shù)的一個(gè)參數(shù)。第31頁(yè)/共44頁(yè)第三十一頁(yè),共45頁(yè)。例例7-4, 函數(shù)語(yǔ)句函數(shù)語(yǔ)句(yj)調(diào)用與函數(shù)表達(dá)式調(diào)用。調(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è)第三十二頁(yè),共45頁(yè)。void main( ) /*主函數(shù)中采用主函數(shù)中采用(ciyng)函數(shù)參數(shù)調(diào)用形式調(diào)用函數(shù)參數(shù)調(diào)用形式調(diào)用函數(shù)函數(shù)max2*/ int x,y,z,m; scanf(%d,%d
20、,%d,&x,&y,&z); printf(max=%dn,max2(max2(x,y),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)用:函數(shù)參數(shù)調(diào)用(dioyng)形式調(diào)用形式調(diào)用(dioyng)函數(shù)函數(shù)max2:int max2(int a,int b) /*求兩個(gè)求兩個(gè)(lin )數(shù)中較大者數(shù)中較大者*/ int y; y=(ab)?a:b; return y;第33頁(yè)/共44頁(yè)第三十三頁(yè),共45頁(yè)。2. 函數(shù)函
21、數(shù)(hnsh)聲明聲明調(diào)用用戶自定義函數(shù)時(shí),一般調(diào)用函數(shù)和被調(diào)用函數(shù)應(yīng)在同一個(gè)調(diào)用用戶自定義函數(shù)時(shí),一般調(diào)用函數(shù)和被調(diào)用函數(shù)應(yīng)在同一個(gè)文件中,在調(diào)用函數(shù)中對(duì)被調(diào)用函數(shù)返回值的類型、函數(shù)名稱文件中,在調(diào)用函數(shù)中對(duì)被調(diào)用函數(shù)返回值的類型、函數(shù)名稱(mngchng)、函數(shù)形式參數(shù)的類型進(jìn)行說(shuō)明,這種說(shuō)明稱為函數(shù)聲、函數(shù)形式參數(shù)的類型進(jìn)行說(shuō)明,這種說(shuō)明稱為函數(shù)聲明。明。函數(shù)函數(shù)(hnsh)聲明的一般形式如下:聲明的一般形式如下:類型名類型名 函數(shù)名(類型函數(shù)名(類型1 形參形參1,類型,類型2 形參形參2,類型,類型n 形參形參n););或或類型名類型名 函數(shù)名(類型函數(shù)名(類型1,類型,類型2,類型
22、,類型n););或或類型名類型名 函數(shù)名();函數(shù)名();函數(shù)聲明是以語(yǔ)句形式出現(xiàn)的,因此其后有語(yǔ)句結(jié)束標(biāo)記函數(shù)聲明是以語(yǔ)句形式出現(xiàn)的,因此其后有語(yǔ)句結(jié)束標(biāo)記“;”。若函數(shù)定義放在主調(diào)函數(shù)之前,遵循先定義后調(diào)用原則若函數(shù)定義放在主調(diào)函數(shù)之前,遵循先定義后調(diào)用原則,函數(shù)聲明可函數(shù)聲明可以省略。以省略。第34頁(yè)/共44頁(yè)第三十四頁(yè),共45頁(yè)。例例7-6: 編程求兩個(gè)整數(shù)編程求兩個(gè)整數(shù)(zhngsh)的階乘之和。的階乘之和。long fac(n) /*定義函數(shù)定義函數(shù)(hnsh)fac,其功,其功能是求能是求n!*/int n;int i; long r=1;/*注意注意r的初始化值為的初始化值為1
23、*/ for(i=1;i=n;i+)r=r*i; return r;#include void main()int m1,m2; long result; long fac(int); /*在主函數(shù)中聲明后面在主函數(shù)中聲明后面(hu mian)定義定義的函數(shù)的函數(shù)fac*/ scanf(%d,%d,&m1,&m2); result=fac(m1)+fac(m2); printf(%d!+%d!=%ldn, m1,m2,result);第35頁(yè)/共44頁(yè)第三十五頁(yè),共45頁(yè)。二二. 形參與形參與(cny)實(shí)實(shí)參參形式參數(shù)形式參數(shù)(簡(jiǎn)稱簡(jiǎn)稱(jinchng)形參形參)定義定義(dn
24、gy)函數(shù)使用的參數(shù)函數(shù)使用的參數(shù)實(shí)際參數(shù)實(shí)際參數(shù)(簡(jiǎn)稱實(shí)參簡(jiǎn)稱實(shí)參)調(diào)用函數(shù)使用的參數(shù)調(diào)用函數(shù)使用的參數(shù)C語(yǔ)言中,采用函數(shù)之間的參數(shù)傳遞方式或用全局變量共享數(shù)據(jù)語(yǔ)言中,采用函數(shù)之間的參數(shù)傳遞方式或用全局變量共享數(shù)據(jù)方式,使一個(gè)函數(shù)能對(duì)不同的數(shù)據(jù)進(jìn)行相同功能的處理。方式,使一個(gè)函數(shù)能對(duì)不同的數(shù)據(jù)進(jìn)行相同功能的處理。C語(yǔ)言函數(shù)的參數(shù)傳遞均采用單向值傳遞方式(或稱復(fù)制方式)。語(yǔ)言函數(shù)的參數(shù)傳遞均采用單向值傳遞方式(或稱復(fù)制方式)。單向值傳遞方式是指在函數(shù)調(diào)用時(shí),將實(shí)參之值傳遞給對(duì)應(yīng)單向值傳遞方式是指在函數(shù)調(diào)用時(shí),將實(shí)參之值傳遞給對(duì)應(yīng)的形式參數(shù),使形參具有與實(shí)參相同的值。的形式參數(shù),使形參具有與實(shí)參
25、相同的值。當(dāng)實(shí)際參數(shù)是變量的地址值、指針常量或指針變量時(shí),實(shí)際參數(shù)當(dāng)實(shí)際參數(shù)是變量的地址值、指針常量或指針變量時(shí),實(shí)際參數(shù)傳遞給形式參數(shù)的是地址值,也同樣是單向值傳遞方式。傳遞給形式參數(shù)的是地址值,也同樣是單向值傳遞方式。第36頁(yè)/共44頁(yè)第三十六頁(yè),共45頁(yè)。例例7-77-7,求方程,求方程(fngchng)ax2+bx+c=0(fngchng)ax2+bx+c=0(a a0 0)的實(shí))的實(shí)數(shù)根。數(shù)根。 分析:分析:(1)一元二次方程的實(shí)根的條件是:)一元二次方程的實(shí)根的條件是: 。(2)定義函數(shù))定義函數(shù)(hnsh)dict來(lái)判斷數(shù)方程是否有實(shí)根,有實(shí)根則返來(lái)判斷數(shù)方程是否有實(shí)根,有實(shí)根則
26、返回函數(shù)回函數(shù)(hnsh)值值1,否則返回函數(shù),否則返回函數(shù)(hnsh)值值0;然后在主函數(shù);然后在主函數(shù)(hnsh)中求方程的實(shí)根。中求方程的實(shí)根。 240bac #include #include void main() float a,b,c,x1,x2,d,dt; int dict(float,float,float); /*聲明函數(shù)聲明函數(shù)(hnsh)dict及形式參數(shù)類型及形式參數(shù)類型*/ printf(Input a,b,c:); scanf(%f,%f,%f,&a,&b,&c);/*輸入方程輸入方程*/ d=dict(a,b,c);/*調(diào)用函數(shù)調(diào)用函數(shù)(
27、hnsh)dict,傳遞實(shí)參,傳遞實(shí)參a,b,c*/ dt=b*b-4*a*c; /* ,可以用一個(gè)函數(shù)可以用一個(gè)函數(shù)(hnsh)實(shí)現(xiàn)實(shí)現(xiàn)*/ 24bac 第37頁(yè)/共44頁(yè)第三十七頁(yè),共45頁(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及形參說(shuō)明及形參說(shuō)明(shumng)*/float a,b,c;float d; d=b*b-4*a*c; /*可以
28、用一個(gè)函數(shù)實(shí)現(xiàn)可以用一個(gè)函數(shù)實(shí)現(xiàn)*/ if(d=0) return(1); else return(0); 第38頁(yè)/共44頁(yè)第三十八頁(yè),共45頁(yè)。函數(shù)main函數(shù)dictabcabc實(shí)參與形參數(shù)據(jù)傳遞通過(guò)通過(guò)(tnggu)函數(shù)調(diào)用,將實(shí)參的值傳遞給形參函數(shù)調(diào)用,將實(shí)參的值傳遞給形參. 函數(shù)調(diào)用時(shí),系統(tǒng)對(duì)參數(shù)函數(shù)調(diào)用時(shí),系統(tǒng)對(duì)參數(shù)(cnsh)的處理步驟為:的處理步驟為:(1)計(jì)算各實(shí)參的值,將實(shí)參值壓入形參棧中,然后執(zhí)行)計(jì)算各實(shí)參的值,將實(shí)參值壓入形參棧中,然后執(zhí)行(zhxng)函函數(shù)體。數(shù)體。(2)當(dāng)函數(shù)執(zhí)行)當(dāng)函數(shù)執(zhí)行(zhxng)完返回時(shí),形參從棧頂彈出(取走)。完返回時(shí),形參從棧頂彈
29、出(取走)。 第39頁(yè)/共44頁(yè)第三十九頁(yè),共45頁(yè)。有關(guān)有關(guān)(yugun)實(shí)參與形參的幾點(diǎn)說(shuō)明:實(shí)參與形參的幾點(diǎn)說(shuō)明:(1)在函數(shù))在函數(shù)(hnsh)定義中指定的形參,未調(diào)用時(shí),它們不占用存儲(chǔ)單元。定義中指定的形參,未調(diào)用時(shí),它們不占用存儲(chǔ)單元。只有調(diào)用該函數(shù)只有調(diào)用該函數(shù)(hnsh)時(shí),形參才被分配空間,函數(shù)時(shí),形參才被分配空間,函數(shù)(hnsh)調(diào)用結(jié)束調(diào)用結(jié)束后,形參所占的存儲(chǔ)單元被釋放。后,形參所占的存儲(chǔ)單元被釋放。(2)實(shí)參為表達(dá)式。函數(shù))實(shí)參為表達(dá)式。函數(shù)(hnsh)調(diào)用時(shí),先計(jì)算表達(dá)式的值,然后將調(diào)用時(shí),先計(jì)算表達(dá)式的值,然后將值傳遞給形參。常量、變量、函數(shù)值傳遞給形參。常量、變
30、量、函數(shù)(hnsh)值都可看成是表達(dá)式的特殊值都可看成是表達(dá)式的特殊形式。形式。(3)定義函數(shù)時(shí),形參的排列沒(méi)有次序要求,但對(duì)形參列表中每個(gè))定義函數(shù)時(shí),形參的排列沒(méi)有次序要求,但對(duì)形參列表中每個(gè)參數(shù)要進(jìn)行說(shuō)明。調(diào)用函數(shù)時(shí),實(shí)參類型、個(gè)數(shù)及排列次序應(yīng)與形參數(shù)要進(jìn)行說(shuō)明。調(diào)用函數(shù)時(shí),實(shí)參類型、個(gè)數(shù)及排列次序應(yīng)與形參一一對(duì)應(yīng)。若類型不一致,必須在參數(shù)前加上強(qiáng)制轉(zhuǎn)換符,否則參一一對(duì)應(yīng)。若類型不一致,必須在參數(shù)前加上強(qiáng)制轉(zhuǎn)換符,否則會(huì)發(fā)生會(huì)發(fā)生“類型不匹配類型不匹配”的錯(cuò)誤。的錯(cuò)誤。(4)實(shí)參與形參的數(shù)據(jù)傳遞為單向傳遞,只可由實(shí)參向形參傳遞,)實(shí)參與形參的數(shù)據(jù)傳遞為單向傳遞,只可由實(shí)參向形參傳遞,不能由形參傳回實(shí)參。實(shí)參與形參處在不同的函數(shù)中,作用的區(qū)域不能由形參傳回實(shí)參。實(shí)參與形參處在不同的函數(shù)中,作用的區(qū)域不同,即使實(shí)參與形參同名,也是不同的變量。不同,即使實(shí)參與形參同名,也是不同的變量。第40頁(yè)/共44頁(yè)第四十頁(yè),共45頁(yè)。三三. 函數(shù)函數(shù)(hnsh)的嵌套調(diào)用的嵌套調(diào)用 所謂函數(shù)的嵌套調(diào)用是指一個(gè)函數(shù)調(diào)用另一函數(shù)的過(guò)程中所謂函數(shù)的嵌套調(diào)用是指一個(gè)函數(shù)調(diào)用另一函數(shù)的過(guò)程中又出現(xiàn)又出現(xiàn)(chxin)對(duì)其它的函數(shù)調(diào)用。對(duì)其它的函數(shù)調(diào)用。 這種嵌套調(diào)用的層次這種嵌套調(diào)用的層次(cngc)原則上不限制。原則上不限制。 函數(shù)1 函數(shù)2
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 暖通工程中央空調(diào)系統(tǒng)運(yùn)行與管理考核試卷
- 嬰兒家具批發(fā)考核試卷
- 獸用藥品的學(xué)術(shù)推廣與醫(yī)學(xué)教育考核試卷
- 機(jī)器視覺(jué)檢測(cè)在半導(dǎo)體品質(zhì)控制中的應(yīng)用考核試卷
- 敏感元件的表面修飾技術(shù)考核試卷
- 數(shù)字出版項(xiàng)目策劃與管理考核試卷
- 剪刀安全教育課件
- 變壓器絕緣檢測(cè)培訓(xùn)課件
- 買賣小產(chǎn)權(quán)合同范本
- 政府供電合同范本
- 起重機(jī)械質(zhì)量安全風(fēng)險(xiǎn)管控清單(起重機(jī)械制造、安裝、修理、改造單位)
- 邀請(qǐng)函模板完整
- 2022年山東經(jīng)貿(mào)職業(yè)學(xué)院?jiǎn)握芯C合素質(zhì)考試筆試試題及答案解析
- 建筑工地三級(jí)安全教育卡
- ID5S606B 600V高低側(cè)柵極驅(qū)動(dòng)芯片兼容PN7103-驪微電子
- 大學(xué)生人文知識(shí)競(jìng)賽報(bào)名表
- 小升初閱讀理解專題課件
- 人教部編版九年級(jí)下冊(cè)歷史第四單元 經(jīng)濟(jì)大危機(jī)和第二次世界大戰(zhàn)單元測(cè)試題
- 個(gè)人理財(cái)實(shí)務(wù)教學(xué)課件
- (完整版)新版PEP小學(xué)英語(yǔ)五年級(jí)下冊(cè)教材分析
- 研發(fā)經(jīng)費(fèi)填報(bào)指標(biāo)說(shuō)明及核算方法
評(píng)論
0/150
提交評(píng)論