歡迎來(lái)到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁(yè) 裝配圖網(wǎng) > 資源分類(lèi) > PPT文檔下載  

第7章 函數(shù)及其應(yīng)用

  • 資源ID:239299143       資源大?。?span id="d5mbnin" class="font-tahoma">488.50KB        全文頁(yè)數(shù):59頁(yè)
  • 資源格式: PPT        下載積分:10積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開(kāi)放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要10積分
郵箱/手機(jī):
溫馨提示:
用戶(hù)名和密碼都是您填寫(xiě)的郵箱或者手機(jī)號(hào),方便查詢(xún)和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號(hào):
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開(kāi),此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁(yè)到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無(wú)水印,預(yù)覽文檔經(jīng)過(guò)壓縮,下載后原文更清晰。
5、試題試卷類(lèi)文檔,如果標(biāo)題沒(méi)有明確說(shuō)明有答案則都視為沒(méi)有答案,請(qǐng)知曉。

第7章 函數(shù)及其應(yīng)用

第第7 7章章 函數(shù)及其應(yīng)用函數(shù)及其應(yīng)用第第7章章 函數(shù)及其應(yīng)用函數(shù)及其應(yīng)用學(xué)習(xí)目標(biāo)學(xué)習(xí)目標(biāo)掌握函數(shù)的編寫(xiě)及調(diào)用方法,領(lǐng)會(huì)模塊化程序設(shè)計(jì)方法。掌握函數(shù)的編寫(xiě)及調(diào)用方法,領(lǐng)會(huì)模塊化程序設(shè)計(jì)方法。學(xué)習(xí)內(nèi)容學(xué)習(xí)內(nèi)容函數(shù)的定義、調(diào)用及聲明,函數(shù)間參數(shù)的傳遞方法,模塊化程序設(shè)計(jì)函數(shù)的定義、調(diào)用及聲明,函數(shù)間參數(shù)的傳遞方法,模塊化程序設(shè)計(jì)方法。方法。下一頁(yè)下一頁(yè)返返 回回第第7章章 函數(shù)及其應(yīng)用函數(shù)及其應(yīng)用7.1 一個(gè)一個(gè)C程序?qū)嵗绦驅(qū)嵗?.2 函數(shù)的定義和調(diào)用函數(shù)的定義和調(diào)用7.3 變量的進(jìn)一步討論變量的進(jìn)一步討論7.4 函數(shù)應(yīng)用實(shí)例函數(shù)應(yīng)用實(shí)例7.5 本章小結(jié)本章小結(jié)7.6 實(shí)訓(xùn)實(shí)訓(xùn)上一頁(yè)上一頁(yè)返返 回回7.1 一個(gè)一個(gè)C程序?qū)嵗绦驅(qū)嵗纠?-1】用調(diào)用函數(shù)的方式計(jì)算整數(shù)的階乘。用調(diào)用函數(shù)的方式計(jì)算整數(shù)的階乘?!境绦虼a程序代碼】#include stdio.hlong fac(int n)/*fac()是自定義函數(shù),用于計(jì)算是自定義函數(shù),用于計(jì)算n的階乘的階乘*/int i;long f=1;for(i=1;iy?x:y;return z;void main()int a,b,c,max;printf(enter a,b,c:);下一頁(yè)下一頁(yè)返返 回回上一頁(yè)上一頁(yè)7.2 函數(shù)的定義和調(diào)用函數(shù)的定義和調(diào)用scanf(%d,%d,%d,&a,&b,&c);max=mymax(mymax(a,b),c);/*函數(shù)嵌套調(diào)用函數(shù)嵌套調(diào)用*/printf(max=%dnn,max);程序輸出結(jié)果為:程序輸出結(jié)果為:程序中函數(shù)程序中函數(shù)mymax()的功能是從兩個(gè)數(shù)中返回較大數(shù)。為了使用函數(shù)的功能是從兩個(gè)數(shù)中返回較大數(shù)。為了使用函數(shù)mymax()找出找出3個(gè)數(shù)中的最大數(shù),程序采用了個(gè)數(shù)中的最大數(shù),程序采用了2次調(diào)用,即先調(diào)用函數(shù)次調(diào)用,即先調(diào)用函數(shù)mymax()找出找出2個(gè)數(shù)中的大數(shù),然后再用這個(gè)大數(shù)和第個(gè)數(shù)中的大數(shù),然后再用這個(gè)大數(shù)和第3個(gè)數(shù)作實(shí)數(shù),調(diào)用函個(gè)數(shù)作實(shí)數(shù),調(diào)用函數(shù)數(shù)mymax()找出最大數(shù)。找出最大數(shù)。下一頁(yè)下一頁(yè)返返 回回上一頁(yè)上一頁(yè)7.2 函數(shù)的定義和調(diào)用函數(shù)的定義和調(diào)用7.2.3 函數(shù)的聲明函數(shù)的聲明函數(shù)的使用原則是先定義后使用,也就是說(shuō),函數(shù)的定義位置原則上函數(shù)的使用原則是先定義后使用,也就是說(shuō),函數(shù)的定義位置原則上應(yīng)出現(xiàn)在函數(shù)調(diào)用位置之前,例應(yīng)出現(xiàn)在函數(shù)調(diào)用位置之前,例7-1和例和例7-2遵循的就是這個(gè)原則。但遵循的就是這個(gè)原則。但是,如果在調(diào)用函數(shù)前對(duì)被調(diào)函數(shù)進(jìn)行聲明,那么調(diào)用函數(shù)和被調(diào)函是,如果在調(diào)用函數(shù)前對(duì)被調(diào)函數(shù)進(jìn)行聲明,那么調(diào)用函數(shù)和被調(diào)函數(shù)的位置就可以隨意安排。數(shù)的位置就可以隨意安排。函數(shù)聲明方法:函數(shù)聲明方法:函數(shù)值類(lèi)型函數(shù)值類(lèi)型 函數(shù)名函數(shù)名(形參列表形參列表);例例7-2中函數(shù)位置按以下形式安排,程序也能正常執(zhí)行。中函數(shù)位置按以下形式安排,程序也能正常執(zhí)行。#include stdio.h#include math.hfloat area(float a,float b,float c);/*函數(shù)聲明函數(shù)聲明*/main()下一頁(yè)下一頁(yè)返返 回回上一頁(yè)上一頁(yè)7.2 函數(shù)的定義和調(diào)用函數(shù)的定義和調(diào)用float x,y,z,sf;printf(請(qǐng)輸入三邊請(qǐng)輸入三邊:);scanf(%f,%f,%f,&x,&y,&z);sf=area(x,y,z);/*調(diào)用函數(shù)調(diào)用函數(shù)*/printf(三邊為三邊為%5.2f,%5.2f,%5.2f的三角形面積等于的三角形面積等于%5.2fn,x,y,z,sf);float area(float a,float b,float c)/*定義函數(shù)定義函數(shù)*/float h,s;h=0.5*(a+b+c);s=(sqrt(h*(h-a)*(h-b)*(h-c);return(s);下一頁(yè)下一頁(yè)返返 回回上一頁(yè)上一頁(yè)7.2 函數(shù)的定義和調(diào)用函數(shù)的定義和調(diào)用提示:提示:(1)函數(shù)聲明與函數(shù)定義的區(qū)別在于,函數(shù)聲明是通過(guò)語(yǔ)句來(lái)完成,)函數(shù)聲明與函數(shù)定義的區(qū)別在于,函數(shù)聲明是通過(guò)語(yǔ)句來(lái)完成,沒(méi)有函數(shù)體,作用類(lèi)似于變量說(shuō)明。沒(méi)有函數(shù)體,作用類(lèi)似于變量說(shuō)明。(2)當(dāng)函數(shù)值類(lèi)型是默認(rèn)類(lèi)型()當(dāng)函數(shù)值類(lèi)型是默認(rèn)類(lèi)型(int型)時(shí),不論被調(diào)函數(shù)與調(diào)用函型)時(shí),不論被調(diào)函數(shù)與調(diào)用函數(shù)位置如何安排,函數(shù)聲明都可以忽略。但是能夠堅(jiān)持函數(shù)聲明是一數(shù)位置如何安排,函數(shù)聲明都可以忽略。但是能夠堅(jiān)持函數(shù)聲明是一個(gè)好的編程習(xí)慣。個(gè)好的編程習(xí)慣。下一頁(yè)下一頁(yè)返返 回回上一頁(yè)上一頁(yè)7.2 函數(shù)的定義和調(diào)用函數(shù)的定義和調(diào)用7.2.4 函數(shù)間的數(shù)據(jù)傳遞函數(shù)間的數(shù)據(jù)傳遞函數(shù)是用來(lái)實(shí)現(xiàn)具體功能的模塊,所以它必然要和程序中的其他模塊函數(shù)是用來(lái)實(shí)現(xiàn)具體功能的模塊,所以它必然要和程序中的其他模塊交換數(shù)據(jù)。一個(gè)函數(shù)可以從函數(shù)之外獲得數(shù)據(jù),并可以向其調(diào)用者返交換數(shù)據(jù)。一個(gè)函數(shù)可以從函數(shù)之外獲得數(shù)據(jù),并可以向其調(diào)用者返回?cái)?shù)據(jù),這些數(shù)據(jù)主要是通過(guò)函數(shù)的參數(shù)和函數(shù)返回值來(lái)傳遞的?;?cái)?shù)據(jù),這些數(shù)據(jù)主要是通過(guò)函數(shù)的參數(shù)和函數(shù)返回值來(lái)傳遞的。C語(yǔ)言中,常見(jiàn)的參數(shù)傳遞方式有語(yǔ)言中,常見(jiàn)的參數(shù)傳遞方式有2種:值傳遞和地址傳遞。本節(jié)介紹種:值傳遞和地址傳遞。本節(jié)介紹值傳遞方式,地址傳遞將在第九章介紹。值傳遞方式,地址傳遞將在第九章介紹。值傳遞的特點(diǎn)是函數(shù)調(diào)用時(shí)實(shí)參僅僅將其值賦給形參。當(dāng)實(shí)參為變量值傳遞的特點(diǎn)是函數(shù)調(diào)用時(shí)實(shí)參僅僅將其值賦給形參。當(dāng)實(shí)參為變量時(shí),實(shí)參變量和形參變量在存儲(chǔ)空間上是分開(kāi)的,因此函數(shù)中對(duì)形參時(shí),實(shí)參變量和形參變量在存儲(chǔ)空間上是分開(kāi)的,因此函數(shù)中對(duì)形參變量值的任何修改都不會(huì)影響到相應(yīng)的實(shí)參變量,前面介紹的實(shí)例中變量值的任何修改都不會(huì)影響到相應(yīng)的實(shí)參變量,前面介紹的實(shí)例中均采用這種方式進(jìn)行參數(shù)傳遞。均采用這種方式進(jìn)行參數(shù)傳遞。下一頁(yè)下一頁(yè)返返 回回上一頁(yè)上一頁(yè)7.2 函數(shù)的定義和調(diào)用函數(shù)的定義和調(diào)用【例例7-5】交換兩個(gè)變量的值。交換兩個(gè)變量的值?!境绦虼a程序代碼】#include stdio.hvoid swap(int x,int y);/*函數(shù)聲明函數(shù)聲明*/void main()int a=10,b=20;printf(a=%d,b=%dn,a,b);swap(a,b);printf(a=%d,b=%dnn,a,b);void swap(int x,int y)/*交換兩個(gè)參數(shù)變量的值交換兩個(gè)參數(shù)變量的值*/下一頁(yè)下一頁(yè)返返 回回上一頁(yè)上一頁(yè)上一頁(yè)上一頁(yè)7.2 函數(shù)的定義和調(diào)用函數(shù)的定義和調(diào)用int z;z=x;x=y;y=z;printf(x=%d,y=%dn,x,y);程序輸出結(jié)果為:程序輸出結(jié)果為:小測(cè)驗(yàn)小測(cè)驗(yàn)從程序輸出結(jié)果來(lái)看,函數(shù)從程序輸出結(jié)果來(lái)看,函數(shù)swap()并沒(méi)有完成交換兩個(gè)變量值的任務(wù),為什并沒(méi)有完成交換兩個(gè)變量值的任務(wù),為什么呢?么呢?提示:值傳遞方式的好處是減少了調(diào)用函數(shù)和被調(diào)函數(shù)之間的數(shù)據(jù)依賴(lài),增提示:值傳遞方式的好處是減少了調(diào)用函數(shù)和被調(diào)函數(shù)之間的數(shù)據(jù)依賴(lài),增強(qiáng)了函數(shù)自身的獨(dú)立性。強(qiáng)了函數(shù)自身的獨(dú)立性。返返 回回7.3 變量的進(jìn)一步討論變量的進(jìn)一步討論一個(gè)變量在程序中的哪個(gè)函數(shù)中都能使用嗎?答案是否定的。一個(gè)變量在程序中的哪個(gè)函數(shù)中都能使用嗎?答案是否定的。根據(jù)變量在程序中的使用范圍,可以將變量分為局部變量和全局變量。根據(jù)變量在程序中的使用范圍,可以將變量分為局部變量和全局變量。局部變量又稱(chēng)為內(nèi)部變量,是指在函數(shù)內(nèi)部定義的變量,其有效范圍局部變量又稱(chēng)為內(nèi)部變量,是指在函數(shù)內(nèi)部定義的變量,其有效范圍僅限于本函數(shù)內(nèi)部。僅限于本函數(shù)內(nèi)部。全局變量又稱(chēng)為外部變量,是指在函數(shù)外部定義的變量。其有效范圍全局變量又稱(chēng)為外部變量,是指在函數(shù)外部定義的變量。其有效范圍從定義變量的位置開(kāi)始直到程序結(jié)束。從定義變量的位置開(kāi)始直到程序結(jié)束。【例例7-6】局部變量和全局變量的使用。局部變量和全局變量的使用。#include stdio.hint x;/*定義定義x為全局變量為全局變量*/int fun1(int x)/*形參形參x為局部變量為局部變量*/下一頁(yè)下一頁(yè)返返 回回7.3 變量的進(jìn)一步討論變量的進(jìn)一步討論return x*x;int fun2(int y)int x;/*函數(shù)內(nèi)部定義函數(shù)內(nèi)部定義x為局部變量為局部變量*/x=y+5;return x*x;main()x=0;/*給全局變量給全局變量x賦值賦值*/printf(The result in fun1:%dn,fun1(5);printf(The result in fun2:%dn,fun2(5);printf(x=%dn,x);/*輸出全局變量輸出全局變量x*/下一頁(yè)下一頁(yè)返返 回回上一頁(yè)上一頁(yè)7.3 變量的進(jìn)一步討論變量的進(jìn)一步討論程序輸出結(jié)果為:程序輸出結(jié)果為:程序說(shuō)明:程序說(shuō)明:本例中有本例中有3個(gè)變量個(gè)變量x:一個(gè)是全局變量:一個(gè)是全局變量x,一個(gè)是函數(shù),一個(gè)是函數(shù)fun1()的形參的形參x,第第3個(gè)是在函數(shù)個(gè)是在函數(shù)fun2()中定義的局部變量中定義的局部變量x,它們,它們3個(gè)雖然同名卻是不個(gè)雖然同名卻是不同的對(duì)象。雖然全局變量的有效范圍是整個(gè)程序,但是在局部變量的同的對(duì)象。雖然全局變量的有效范圍是整個(gè)程序,但是在局部變量的作用范圍內(nèi),同名全局變量暫時(shí)不起作用。作用范圍內(nèi),同名全局變量暫時(shí)不起作用。提示提示:為了使程序清晰易讀,程序中不同用途的變量最好不要使用相同的變量為了使程序清晰易讀,程序中不同用途的變量最好不要使用相同的變量名,以免造成混亂。名,以免造成混亂。下一頁(yè)下一頁(yè)返返 回回上一頁(yè)上一頁(yè)7.3 變量的進(jìn)一步討論變量的進(jìn)一步討論程序中不論是形參程序中不論是形參x還是局部變量還是局部變量x,都是在函數(shù)執(zhí)行時(shí)為其分配存儲(chǔ),都是在函數(shù)執(zhí)行時(shí)為其分配存儲(chǔ)單元,一旦函數(shù)執(zhí)行結(jié)束,所占內(nèi)存空間即刻釋放,也就是說(shuō)它們的單元,一旦函數(shù)執(zhí)行結(jié)束,所占內(nèi)存空間即刻釋放,也就是說(shuō)它們的生存期僅限于函數(shù)執(zhí)行期間,這種變量屬于動(dòng)態(tài)存儲(chǔ)變量。生存期僅限于函數(shù)執(zhí)行期間,這種變量屬于動(dòng)態(tài)存儲(chǔ)變量?!纠?-7】下面程序希望輸出下面程序希望輸出1n之間各數(shù)的階乘。之間各數(shù)的階乘。#include stdio.hlong fun(int i)long f=1;/*定義定義f 為局部變量并賦初值為局部變量并賦初值1*/f=f*i;return f;下一頁(yè)下一頁(yè)返返 回回上一頁(yè)上一頁(yè)7.3 變量的進(jìn)一步討論變量的進(jìn)一步討論main()int n,m;printf(please enter n:);scanf(%d,&n);for(m=1;m0;i-)a+=sub2(i);/*函數(shù)調(diào)用函數(shù)調(diào)用*/return(a);int sub2(int n)/*函數(shù)定義函數(shù)定義*/return (n+1);程序分析:程序分析:程序中有程序中有3個(gè)函數(shù):個(gè)函數(shù):1個(gè)個(gè)main()函數(shù)和函數(shù)和2個(gè)自定義函數(shù)。程序執(zhí)行時(shí),主函數(shù)調(diào)個(gè)自定義函數(shù)。程序執(zhí)行時(shí),主函數(shù)調(diào)用用sub1()函數(shù),函數(shù),sub1()函數(shù)又調(diào)用函數(shù)又調(diào)用sub2()函數(shù),函數(shù),sub2()函數(shù)執(zhí)行完后會(huì)返回函數(shù)執(zhí)行完后會(huì)返回sub1()函數(shù),函數(shù),sub1()函數(shù)會(huì)返回主函數(shù)。這種多層調(diào)用的關(guān)系稱(chēng)為函數(shù)的嵌套調(diào)函數(shù)會(huì)返回主函數(shù)。這種多層調(diào)用的關(guān)系稱(chēng)為函數(shù)的嵌套調(diào)用。用。圖圖7-1 是函數(shù)嵌套調(diào)用示意圖。是函數(shù)嵌套調(diào)用示意圖。小測(cè)驗(yàn)小測(cè)驗(yàn)寫(xiě)出例寫(xiě)出例7-8的輸出結(jié)果。的輸出結(jié)果。下一頁(yè)下一頁(yè)返返 回回上一頁(yè)上一頁(yè)7.4 函數(shù)應(yīng)用實(shí)例函數(shù)應(yīng)用實(shí)例【例例7-9】函數(shù)的遞歸調(diào)用。函數(shù)的遞歸調(diào)用。#include stdio.hint age(int n)int a;if (n=1)a=10;else a=age(n-1)+2;/*遞歸調(diào)用遞歸調(diào)用*/return(a);main()printf(age=%dn,age(5);下一頁(yè)下一頁(yè)返返 回回上一頁(yè)上一頁(yè)7.4 函數(shù)應(yīng)用實(shí)例函數(shù)應(yīng)用實(shí)例程序分析:程序分析:程序中主函數(shù)程序中主函數(shù)main()調(diào)用了函數(shù)調(diào)用了函數(shù)age(),而函數(shù),而函數(shù)age()在變量在變量n不等于不等于1時(shí),又調(diào)用了時(shí),又調(diào)用了age()函數(shù)自己,這種調(diào)用的關(guān)系就叫函數(shù)的遞歸調(diào)用。函數(shù)自己,這種調(diào)用的關(guān)系就叫函數(shù)的遞歸調(diào)用。圖圖7-2給出了給出了age()函數(shù)的遞歸過(guò)程。函數(shù)的遞歸過(guò)程?!纠?-10】算術(shù)練習(xí)程序。讓計(jì)算機(jī)給小學(xué)生出算術(shù)練習(xí)程序。讓計(jì)算機(jī)給小學(xué)生出10道簡(jiǎn)單的算術(shù)題道簡(jiǎn)單的算術(shù)題(兩位整數(shù)范圍內(nèi),由隨機(jī)函數(shù)(兩位整數(shù)范圍內(nèi),由隨機(jī)函數(shù)rand()產(chǎn)生),學(xué)生輸入答案后,計(jì)產(chǎn)生),學(xué)生輸入答案后,計(jì)算機(jī)會(huì)自動(dòng)判定是否正確,最后輸出學(xué)生的得分(每道題算機(jī)會(huì)自動(dòng)判定是否正確,最后輸出學(xué)生的得分(每道題10分)。算分)。算術(shù)題有加、減、乘、除術(shù)題有加、減、乘、除4種。種。【編程思路編程思路】本題采用模塊化程序設(shè)計(jì)方法,本題采用模塊化程序設(shè)計(jì)方法,4種運(yùn)算在種運(yùn)算在4個(gè)子模塊(函數(shù))中完成,個(gè)子模塊(函數(shù))中完成,main()函數(shù)為主控程序,根據(jù)用戶(hù)的選擇,調(diào)用相應(yīng)的子模塊,其模塊結(jié)函數(shù)為主控程序,根據(jù)用戶(hù)的選擇,調(diào)用相應(yīng)的子模塊,其模塊結(jié)構(gòu)如構(gòu)如圖圖7-3所示。所示。下一頁(yè)下一頁(yè)返返 回回上一頁(yè)上一頁(yè)7.4 函數(shù)應(yīng)用實(shí)例函數(shù)應(yīng)用實(shí)例【程序代碼程序代碼】#include stdio.h#include time.h#include stdlib.h void fun1();/*函數(shù)聲明函數(shù)聲明*/void fun2();/*函數(shù)聲明函數(shù)聲明*/void fun3();/*函數(shù)聲明函數(shù)聲明*/void fun4();/*函數(shù)聲明函數(shù)聲明*/main()/*主控函數(shù),顯示菜單主控函數(shù),顯示菜單*/int n;while(1)下一頁(yè)下一頁(yè)返返 回回上一頁(yè)上一頁(yè)7.4 函數(shù)應(yīng)用實(shí)例函數(shù)應(yīng)用實(shí)例 printf(n=算術(shù)練習(xí)程序算術(shù)練習(xí)程序=n);printf(n 1.加加 法法 n);printf(n 2.減減 法法 n);printf(n 3.乘乘 法法 n);printf(n 4.除除 法法 n);printf(n 0.退退 出出 n);printf(n=n);下一頁(yè)下一頁(yè)返返 回回上一頁(yè)上一頁(yè)7.4 函數(shù)應(yīng)用實(shí)例函數(shù)應(yīng)用實(shí)例printf(請(qǐng)選擇請(qǐng)選擇(0-4):);scanf(%d,&n);switch (n)/*根據(jù)選擇調(diào)用相應(yīng)的函數(shù)根據(jù)選擇調(diào)用相應(yīng)的函數(shù)*/case 1:fun1();break;case 2:fun2();break;case 3:fun3();break;case 4:fun4();break;case 0:exit(0);/*函數(shù)函數(shù)exit(0)用于正常退出程序用于正常退出程序*/void fun1()/*加法函數(shù)加法函數(shù)*/下一頁(yè)下一頁(yè)返返 回回上一頁(yè)上一頁(yè)7.4 函數(shù)應(yīng)用實(shí)例函數(shù)應(yīng)用實(shí)例 int i,a,b,m,k=0;for(i=0;i10;i+)a=10+rand()%90;b=10+rand()%90;printf(%d+%d=,a,b);scanf(%d,&m);if(m=(a+b)k+=10;printf(你的得分是你的得分是:%dn,k);void fun2()/*減法函數(shù)減法函數(shù)*/下一頁(yè)下一頁(yè)返返 回回上一頁(yè)上一頁(yè)7.4 函數(shù)應(yīng)用實(shí)例函數(shù)應(yīng)用實(shí)例 int i,a,b,m,k=0;for(i=0;i10;i+)a=10+rand()%90;b=10+rand()%90;printf(%d-%d=,a,b);scanf(%d,&m);if(m=(a-b)k+=10;printf(你的得分是你的得分是:%dn,k);下一頁(yè)下一頁(yè)返返 回回上一頁(yè)上一頁(yè)7.4 函數(shù)應(yīng)用實(shí)例函數(shù)應(yīng)用實(shí)例void fun3()/*乘法函數(shù)乘法函數(shù)*/int i,a,b,m,k=0;for(i=0;i10;i+)a=10+rand()%90;b=10+rand()%90;printf(%d*%d=,a,b);scanf(%d,&m);if(m=(a*b)k+=10;printf(你的得分是你的得分是:%dn,k);下一頁(yè)下一頁(yè)返返 回回上一頁(yè)上一頁(yè)7.4 函數(shù)應(yīng)用實(shí)例函數(shù)應(yīng)用實(shí)例下一頁(yè)下一頁(yè)返返 回回上一頁(yè)上一頁(yè)void fun4()/*除法函數(shù)除法函數(shù)*/int i,a,b,m,k=0;for(i=0;i10;i+)a=10+rand()%90;b=10+rand()%90;printf(%d/%d=,a,b);scanf(%d,&m);if(m=(a/b)k+=10;printf(你的得分是你的得分是:%dn,k);上一頁(yè)上一頁(yè)7.4 函數(shù)應(yīng)用實(shí)例函數(shù)應(yīng)用實(shí)例程序執(zhí)行后的主界面為:程序執(zhí)行后的主界面為:選擇選擇1,做加法練習(xí)時(shí),執(zhí)行過(guò)程為:選擇,做加法練習(xí)時(shí),執(zhí)行過(guò)程為:選擇3,做乘法練習(xí)時(shí),執(zhí)行過(guò)程為:,做乘法練習(xí)時(shí),執(zhí)行過(guò)程為:返返 回回7.5 本章小結(jié)本章小結(jié)下一頁(yè)下一頁(yè)返返 回回1.編程時(shí)使用函數(shù)的好處有以下幾個(gè)方面:編程時(shí)使用函數(shù)的好處有以下幾個(gè)方面:(1)程序結(jié)構(gòu)清晰,可讀性好。)程序結(jié)構(gòu)清晰,可讀性好。(2)減少重復(fù)編碼的工作量。)減少重復(fù)編碼的工作量。(3)可多人共同編制一個(gè)大程序,縮短程序設(shè)計(jì)周期,提高程序)可多人共同編制一個(gè)大程序,縮短程序設(shè)計(jì)周期,提高程序設(shè)計(jì)和調(diào)試的效率。設(shè)計(jì)和調(diào)試的效率??梢哉f(shuō)掌握好函數(shù)是學(xué)好可以說(shuō)掌握好函數(shù)是學(xué)好C語(yǔ)言的關(guān)鍵之一。語(yǔ)言的關(guān)鍵之一。2.函數(shù)的使用原則是先定義后使用。函數(shù)的使用原則是先定義后使用。3.函數(shù)定義。根據(jù)實(shí)際問(wèn)題確定函數(shù)首部,編寫(xiě)函數(shù)體。函數(shù)定義。根據(jù)實(shí)際問(wèn)題確定函數(shù)首部,編寫(xiě)函數(shù)體。對(duì)初學(xué)者來(lái)說(shuō),定義函數(shù)時(shí),如何設(shè)置形參是一個(gè)難點(diǎn)??梢赃@對(duì)初學(xué)者來(lái)說(shuō),定義函數(shù)時(shí),如何設(shè)置形參是一個(gè)難點(diǎn)??梢赃@樣考慮:形參是虛擬變量,它要從調(diào)用函數(shù)中得值,那么該函數(shù)是樣考慮:形參是虛擬變量,它要從調(diào)用函數(shù)中得值,那么該函數(shù)是否需要從調(diào)用函數(shù)中接受數(shù)據(jù),需要接受幾個(gè)什么類(lèi)型的數(shù)據(jù),以否需要從調(diào)用函數(shù)中接受數(shù)據(jù),需要接受幾個(gè)什么類(lèi)型的數(shù)據(jù),以此來(lái)確定有沒(méi)有必要設(shè)置形參,設(shè)置幾個(gè)形參。此來(lái)確定有沒(méi)有必要設(shè)置形參,設(shè)置幾個(gè)形參。例如,有函數(shù)首部為:例如,有函數(shù)首部為:float dis(float m1,float m2,float d)表示將從調(diào)用函數(shù)中接受表示將從調(diào)用函數(shù)中接受3個(gè)個(gè)float類(lèi)型的數(shù)據(jù)。類(lèi)型的數(shù)據(jù)。上一頁(yè)上一頁(yè)7.5 本章小結(jié)本章小結(jié)4.函數(shù)調(diào)用時(shí),實(shí)參與形參的個(gè)數(shù)應(yīng)相同,類(lèi)型應(yīng)一致。實(shí)參與形參函數(shù)調(diào)用時(shí),實(shí)參與形參的個(gè)數(shù)應(yīng)相同,類(lèi)型應(yīng)一致。實(shí)參與形參按順序?qū)?yīng)按順序?qū)?yīng),一一傳遞數(shù)據(jù)。一一傳遞數(shù)據(jù)。5.函數(shù)間數(shù)據(jù)傳遞方法有兩種:值傳遞和地址傳遞。當(dāng)實(shí)參為常量、函數(shù)間數(shù)據(jù)傳遞方法有兩種:值傳遞和地址傳遞。當(dāng)實(shí)參為常量、變量或表達(dá)式時(shí)均采用單向值傳遞,形參僅從實(shí)參得到值,形參值的變量或表達(dá)式時(shí)均采用單向值傳遞,形參僅從實(shí)參得到值,形參值的變化對(duì)實(shí)參沒(méi)有影響。變化對(duì)實(shí)參沒(méi)有影響。6.函數(shù)聲明。原則上以下兩種情況可以不進(jìn)行函數(shù)聲明:函數(shù)聲明。原則上以下兩種情況可以不進(jìn)行函數(shù)聲明:(1)函數(shù)定義在前,調(diào)用函數(shù)在后。)函數(shù)定義在前,調(diào)用函數(shù)在后。(2)函數(shù)定義在后,但函數(shù)的類(lèi)型是)函數(shù)定義在后,但函數(shù)的類(lèi)型是int型。型。當(dāng)調(diào)用在前,被調(diào)函數(shù)定義在后,且被調(diào)函數(shù)的類(lèi)型不是當(dāng)調(diào)用在前,被調(diào)函數(shù)定義在后,且被調(diào)函數(shù)的類(lèi)型不是int型時(shí),必型時(shí),必須對(duì)被調(diào)函數(shù)進(jìn)行聲明。須對(duì)被調(diào)函數(shù)進(jìn)行聲明。7.函數(shù)可以嵌套調(diào)用和遞歸調(diào)用。函數(shù)可以嵌套調(diào)用和遞歸調(diào)用。8.變量。按照變量的作用范圍,變量分局部變量和全局變量;按照變變量。按照變量的作用范圍,變量分局部變量和全局變量;按照變量的生存期,變量分靜態(tài)存儲(chǔ)變量和動(dòng)態(tài)存儲(chǔ)變量。量的生存期,變量分靜態(tài)存儲(chǔ)變量和動(dòng)態(tài)存儲(chǔ)變量。返返 回回7.6 實(shí)訓(xùn)實(shí)訓(xùn) 實(shí)訓(xùn)實(shí)訓(xùn)1 【實(shí)訓(xùn)內(nèi)容實(shí)訓(xùn)內(nèi)容】函數(shù)的定義和調(diào)用函數(shù)的定義和調(diào)用【實(shí)訓(xùn)目的實(shí)訓(xùn)目的】掌握函數(shù)的定義和調(diào)用方法掌握函數(shù)的定義和調(diào)用方法【實(shí)訓(xùn)題目實(shí)訓(xùn)題目】(1)下面程序希望計(jì)算兩個(gè)數(shù)的平均值,寫(xiě)出程序的預(yù)期結(jié)果,并)下面程序希望計(jì)算兩個(gè)數(shù)的平均值,寫(xiě)出程序的預(yù)期結(jié)果,并上機(jī)驗(yàn)證。上機(jī)驗(yàn)證。#include stdio.hdouble average(int,int);/*函數(shù)聲明函數(shù)聲明*/main()int a,b;double v;a=10;b=11;下一頁(yè)下一頁(yè)返返 回回7.6 實(shí)訓(xùn)實(shí)訓(xùn)v=average(a,b);/*函數(shù)調(diào)用函數(shù)調(diào)用*/printf(%lfn,v);double average(int x,int y)/*函數(shù)定義函數(shù)定義*/double z;z=(x+y)/2;return(z);(2)下面程序的功能是計(jì)算兩個(gè)圓的周長(zhǎng)之差,請(qǐng)把程序補(bǔ)充完整,)下面程序的功能是計(jì)算兩個(gè)圓的周長(zhǎng)之差,請(qǐng)把程序補(bǔ)充完整,并上機(jī)驗(yàn)證。并上機(jī)驗(yàn)證。#include stdio.h ;下一頁(yè)下一頁(yè)返返 回回上一頁(yè)上一頁(yè)7.6 實(shí)訓(xùn)實(shí)訓(xùn)main()double r1,r2,len;r1=3.3;r2=5.5;len=;printf(len=%lfn,len);double mylen(double r)double length;length=2*3.14159*r;下一頁(yè)下一頁(yè)返返 回回上一頁(yè)上一頁(yè)7.6 實(shí)訓(xùn)實(shí)訓(xùn) 實(shí)訓(xùn)實(shí)訓(xùn)2 【實(shí)訓(xùn)內(nèi)容實(shí)訓(xùn)內(nèi)容】函數(shù)間數(shù)據(jù)的傳遞函數(shù)間數(shù)據(jù)的傳遞【實(shí)訓(xùn)目的實(shí)訓(xùn)目的】掌握單向值傳遞方法掌握單向值傳遞方法【實(shí)訓(xùn)題目實(shí)訓(xùn)題目】分析下面程序的輸出結(jié)果,并上機(jī)驗(yàn)證。分析下面程序的輸出結(jié)果,并上機(jī)驗(yàn)證。#include stdio.hint f(int x,int y,int cp,int dp)cp=x*x+y*y;dp=x+x-y*y;return(cp);return(dp);下一頁(yè)下一頁(yè)返返 回回上一頁(yè)上一頁(yè)7.6 實(shí)訓(xùn)實(shí)訓(xùn)main()int a=4,b=3,c=5,d=6;f(a,b,c,d);printf(%d%dn,c,d);下一頁(yè)下一頁(yè)返返 回回上一頁(yè)上一頁(yè)7.6 實(shí)訓(xùn)實(shí)訓(xùn) 實(shí)訓(xùn)實(shí)訓(xùn)3 【實(shí)訓(xùn)內(nèi)容實(shí)訓(xùn)內(nèi)容】函數(shù)的編寫(xiě)函數(shù)的編寫(xiě)【實(shí)訓(xùn)目的實(shí)訓(xùn)目的】掌握函數(shù)的編寫(xiě)方法掌握函數(shù)的編寫(xiě)方法【實(shí)訓(xùn)題目實(shí)訓(xùn)題目】函數(shù)函數(shù)prime()是一個(gè)判斷整數(shù)是否為素?cái)?shù)的函數(shù),調(diào)用是一個(gè)判斷整數(shù)是否為素?cái)?shù)的函數(shù),調(diào)用該函數(shù)輸出該函數(shù)輸出1000以?xún)?nèi)的素?cái)?shù),要求輸出每行以?xún)?nèi)的素?cái)?shù),要求輸出每行10個(gè)數(shù)。主函數(shù)已經(jīng)給出,個(gè)數(shù)。主函數(shù)已經(jīng)給出,請(qǐng)編寫(xiě)函數(shù)請(qǐng)編寫(xiě)函數(shù)prime()。int prime(int n)/*判斷參數(shù)判斷參數(shù)n是否為素?cái)?shù)是否為素?cái)?shù)*/void main()/*主函數(shù)主函數(shù)*/下一頁(yè)下一頁(yè)返返 回回上一頁(yè)上一頁(yè)7.6 實(shí)訓(xùn)實(shí)訓(xùn)int n;int c=0;/*統(tǒng)計(jì)素?cái)?shù)個(gè)數(shù)統(tǒng)計(jì)素?cái)?shù)個(gè)數(shù),用以控制輸出格式用以控制輸出格式*/printf(1000之間的素?cái)?shù)如下之間的素?cái)?shù)如下:n);for(n=2;n=1000;n+)if(prime(n)=1)/*函數(shù)調(diào)用函數(shù)調(diào)用*/printf(%6d,n);c+;if(c%10=0)printf(n);/*每行輸出每行輸出10個(gè)素?cái)?shù)個(gè)素?cái)?shù)*/下一頁(yè)下一頁(yè)返返 回回上一頁(yè)上一頁(yè)7.6 實(shí)訓(xùn)實(shí)訓(xùn) 實(shí)訓(xùn)實(shí)訓(xùn)4 【實(shí)訓(xùn)內(nèi)容實(shí)訓(xùn)內(nèi)容】變量。變量?!緦?shí)訓(xùn)目的實(shí)訓(xùn)目的】掌握局部變量和靜態(tài)變量的特性。掌握局部變量和靜態(tài)變量的特性?!緦?shí)訓(xùn)題目實(shí)訓(xùn)題目】分析下面程序的輸出結(jié)果,然后上機(jī)驗(yàn)證。分析下面程序的輸出結(jié)果,然后上機(jī)驗(yàn)證。程序一程序一#include stdio.h#include math.hvoid fun1();void fun2();void main()int x=1;下一頁(yè)下一頁(yè)返返 回回上一頁(yè)上一頁(yè)7.6 實(shí)訓(xùn)實(shí)訓(xùn) fun1();printf(%dn,x);void fun1()int x=2;fun2();printf(%dn,x);void fun2()int x=3;printf(%dn,x);下一頁(yè)下一頁(yè)返返 回回上一頁(yè)上一頁(yè)7.6 實(shí)訓(xùn)實(shí)訓(xùn)程序二程序二#include stdio.h#include math.hvoid fun();void main()fun();fun();fun();void fun()int x=0;x=x+1;printf(%dn,x);下一頁(yè)下一頁(yè)返返 回回上一頁(yè)上一頁(yè)上一頁(yè)上一頁(yè)7.6 實(shí)訓(xùn)實(shí)訓(xùn)程序三程序三#include stdio.h#include math.hvoid fun();void main()fun();fun();fun();返返 回回void fun()static int x=0;x=x+1;printf(%dn,x);圖圖7-1 函數(shù)的嵌套調(diào)用函數(shù)的嵌套調(diào)用返返 回回圖圖7-2 age()函數(shù)的遞歸過(guò)程函數(shù)的遞歸過(guò)程返返 回回圖圖7-3 模塊化結(jié)構(gòu)示意模塊化結(jié)構(gòu)示意返返 回回

注意事項(xiàng)

本文(第7章 函數(shù)及其應(yīng)用)為本站會(huì)員(痛***)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請(qǐng)重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話(huà):18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶(hù)上傳的文檔直接被用戶(hù)下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!