




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第五章第五章 函函 數(shù)數(shù)1.1. 掌握掌握函數(shù)定義函數(shù)定義的方法,理解的方法,理解函數(shù)名、參數(shù)函數(shù)名、參數(shù)與與返回返回值值的含義。的含義。2.2. 熟練掌握熟練掌握函數(shù)調(diào)用函數(shù)調(diào)用的基本方法,理解的基本方法,理解函數(shù)聲明函數(shù)聲明的的作用。作用。3.3. 掌握掌握全局變量全局變量和和局部變量局部變量的概念及其使用要點(diǎn)。的概念及其使用要點(diǎn)。4.4. 通過函數(shù)的設(shè)計(jì)與實(shí)現(xiàn),全面掌握結(jié)構(gòu)化程序設(shè)通過函數(shù)的設(shè)計(jì)與實(shí)現(xiàn),全面掌握結(jié)構(gòu)化程序設(shè)計(jì)方法計(jì)方法, ,自覺運(yùn)用自覺運(yùn)用“CDIOCDIO理念理念”實(shí)現(xiàn)計(jì)算機(jī)編程。實(shí)現(xiàn)計(jì)算機(jī)編程。本章教學(xué)內(nèi)容本章教學(xué)內(nèi)容1. 計(jì)算圓柱體積計(jì)算圓柱體積2. 使用函數(shù)編寫程
2、序使用函數(shù)編寫程序3. 變量與函數(shù)變量與函數(shù)4. 課后思考課后思考 程序解析程序解析 函數(shù)的定義函數(shù)的定義 函數(shù)的調(diào)用函數(shù)的調(diào)用例例5-1 5-1 輸入圓柱輸入圓柱體體的高和半徑,求圓柱體積的高和半徑,求圓柱體積,volume=*r2*h。要求定義和調(diào)用函數(shù)要求定義和調(diào)用函數(shù)cylinder(r, h )計(jì)算圓計(jì)算圓柱體的體積。柱體的體積。 / /* * 計(jì)算圓柱體積計(jì)算圓柱體積 * */ /#include int main( void ) double height, radius, volume;double cylinder (double r, double h); /* 函數(shù)聲明函
3、數(shù)聲明*/printf (Enter radius and height: );scanf (%lf%lf, &radius, &height); /* 調(diào)用函數(shù)調(diào)用函數(shù),返回值賦給,返回值賦給volume */volume = cylinder (radius, height );printf (Volume = %.3fn, volume);return 0;/* 定義求圓柱體積的函數(shù)定義求圓柱體積的函數(shù) */double cylinder (double r, double h)double result;result =3.1415926 * r * r * h; /*
4、 計(jì)算體積計(jì)算體積 */return result; /* 返回結(jié)果返回結(jié)果 */Enter radius and height: 3.0 10Volume = 282.743函數(shù)是指完成一個(gè)特定工作的獨(dú)立程序模塊。函數(shù)是指完成一個(gè)特定工作的獨(dú)立程序模塊。庫函數(shù):由庫函數(shù):由C C語言系統(tǒng)提供定義語言系統(tǒng)提供定義如如scanfscanf()、()、printfprintf()等函數(shù)()等函數(shù)自定義函數(shù):需要用戶自己定義自定義函數(shù):需要用戶自己定義如計(jì)算圓柱體體積函數(shù)如計(jì)算圓柱體體積函數(shù)cylindercylinder()()main()main()也是一個(gè)函數(shù),也是一個(gè)函數(shù),C C程序由一個(gè)程
5、序由一個(gè)main()main()或多個(gè)或多個(gè)函數(shù)構(gòu)成。函數(shù)構(gòu)成。程序中一旦調(diào)用了某個(gè)函數(shù),該函數(shù)就會(huì)完成一些程序中一旦調(diào)用了某個(gè)函數(shù),該函數(shù)就會(huì)完成一些特定的工作,然后返回到調(diào)用它的地方。特定的工作,然后返回到調(diào)用它的地方。函數(shù)經(jīng)過運(yùn)算,得到一個(gè)明確的函數(shù)經(jīng)過運(yùn)算,得到一個(gè)明確的運(yùn)算結(jié)果運(yùn)算結(jié)果,并需要回送,并需要回送該結(jié)果。例如,函數(shù)該結(jié)果。例如,函數(shù)cylinder()cylinder()返回圓柱的體積。返回圓柱的體積。函數(shù)完成一系列操作步驟,函數(shù)完成一系列操作步驟,不需要回送任何運(yùn)算結(jié)果不需要回送任何運(yùn)算結(jié)果。函數(shù)類型函數(shù)類型 函數(shù)名(形參表)函數(shù)名(形參表)/ /* * 函數(shù)首部函數(shù)首
6、部 * */ / / /* * 函數(shù)體函數(shù)體 * */ / 函數(shù)實(shí)現(xiàn)過程函數(shù)實(shí)現(xiàn)過程 return return 表達(dá)式;表達(dá)式; 把函數(shù)運(yùn)算的結(jié)果回送給主函數(shù)把函數(shù)運(yùn)算的結(jié)果回送給主函數(shù)只能返回一個(gè)值只能返回一個(gè)值函數(shù)返回值的類型函數(shù)返回值的類型沒有分號沒有分號double cylinder (double r, double h) double result; result = 3.1415926 * r * r * h; return result;類型類型1 1 參數(shù)參數(shù)1 1 ,類型,類型2 2 參數(shù)參數(shù)2 2 ,類型,類型n n 參數(shù)參數(shù)n n參數(shù)之間用逗號分隔,每個(gè)參數(shù)前面的類型
7、都必須分別寫明參數(shù)之間用逗號分隔,每個(gè)參數(shù)前面的類型都必須分別寫明函數(shù)類型函數(shù)類型 函數(shù)名(形參表)函數(shù)名(形參表) 函數(shù)實(shí)現(xiàn)過程函數(shù)實(shí)現(xiàn)過程 return return 表達(dá)式;表達(dá)式; 不能寫成不能寫成 double r, hdouble r, hdouble cylinder (double r, double h) double result; result =3.1415926 * r * r * h; return result;double cylinder (double r, double h) / /* * 函數(shù)首部函數(shù)首部 * */ / /* * 函數(shù)體函數(shù)體,寫在一對大
8、括號內(nèi),寫在一對大括號內(nèi) * */ / double result;result =3.1415926 * r * r * h; / /* * 計(jì)算圓柱體積計(jì)算圓柱體積 * */ /return result; / /* * 返回運(yùn)算結(jié)果返回運(yùn)算結(jié)果* */ /函數(shù)類型函數(shù)類型函數(shù)名函數(shù)名形參表形參表與函數(shù)類型一致與函數(shù)類型一致voidvoid 函數(shù)名(參數(shù)表)函數(shù)名(參數(shù)表) / /* * 函數(shù)首部函數(shù)首部 * */ / / /* * 函數(shù)體函數(shù)體 * */ / 函數(shù)實(shí)現(xiàn)過程函數(shù)實(shí)現(xiàn)過程 returnreturn; / /* * 可以省略可以省略return return * */ / 這類
9、函數(shù)通常用于屏幕輸出等這類函數(shù)通常用于屏幕輸出等表示不返回結(jié)果表示不返回結(jié)果不能省略不能省略否則,函數(shù)類型被默認(rèn)定義為否則,函數(shù)類型被默認(rèn)定義為intint/ /* * 輸出數(shù)字金字塔輸出數(shù)字金字塔 * */ /#include int main (void) void pyramid (int n);/* 函數(shù)聲明函數(shù)聲明 */pyramid(5);/* 調(diào)用函數(shù),輸出數(shù)字金字塔調(diào)用函數(shù),輸出數(shù)字金字塔 */return 0;void pyramid (int n) /* 函數(shù)定義函數(shù)定義 */int i, j;for (i = 1; i = n; i+)/* 需要輸出的行數(shù)需要輸出的行數(shù)
10、*/ for (j = 1; j = n-i; j+) /* 輸出每行左邊的空格輸出每行左邊的空格 */printf( ); for (j = 1; j = i; j+) /* 輸出每行的數(shù)字輸出每行的數(shù)字 */ printf( %d , i); /* 每個(gè)數(shù)字的前后各有一個(gè)空格每個(gè)數(shù)字的前后各有一個(gè)空格 */ putchar (n); 12 2 3 3 3 4 4 4 45 5 5 5 5 定義一個(gè)函數(shù)后,就可以在程序中調(diào)用這定義一個(gè)函數(shù)后,就可以在程序中調(diào)用這個(gè)函數(shù)。個(gè)函數(shù)。 調(diào)用標(biāo)準(zhǔn)庫函數(shù)調(diào)用標(biāo)準(zhǔn)庫函數(shù)時(shí),在程序的最前面用時(shí),在程序的最前面用#include#include命令包含相應(yīng)的
11、頭文件。命令包含相應(yīng)的頭文件。 調(diào)用自定義函數(shù)調(diào)用自定義函數(shù)時(shí),程序中必須有與調(diào)用時(shí),程序中必須有與調(diào)用函數(shù)相對應(yīng)的函數(shù)相對應(yīng)的函數(shù)定義函數(shù)定義。n使用返回值:使用返回值:volume = cylinder (radius, height );printf(“%f n” , cylinder (radius, height );n完成操作:完成操作:pyramid(5);常用于常用于voidvoid類型函數(shù)的調(diào)用類型函數(shù)的調(diào)用常用于返回結(jié)果的函數(shù)的調(diào)用常用于返回結(jié)果的函數(shù)的調(diào)用常量、變量、表達(dá)式常量、變量、表達(dá)式函數(shù)名函數(shù)名(實(shí)參表實(shí)參表)#include int main( void ) d
12、ouble height, radius, volume;double cylinder (double r, double h); printf (Enter radius and height: );scanf (%lf%lf, &radius, &height);volume = cylinder (radius, height );printf (Volume = %.3fn, volume);return 0;double cylinder (double r, double h) double result;result =3.1415926 * r * r * h
13、; return result; 調(diào)用函數(shù)調(diào)用函數(shù)實(shí)參實(shí)參形參形參執(zhí)行函數(shù)中的語句執(zhí)行函數(shù)中的語句返回調(diào)用它的地方返回調(diào)用它的地方71513114/* 用格里高利公式計(jì)算用格里高利公式計(jì)算的近似值,的近似值,精度為精度為e */#include #include int main (void) double e, pi; double funpi (double e); printf (Enter e:); scanf (%lf, &e); pi = funpi (e); printf (pi = %fn, pi);return 0;double funpi (double e) in
14、t denominator, flag; double item, sum; flag = 1; denominator = 1; item = 1.0; sum = 0; while (fabs (item) = e) item = flag * 1.0 / denominator; sum = sum + item; flag = -flag; denominator = denominator + 2; return sum * 4;Enter e: 0.0001pi = 3.1418例例5-5 5-5 求求100100以內(nèi)的全部素?cái)?shù),每行輸出以內(nèi)的全部素?cái)?shù),每行輸出1010個(gè)。素?cái)?shù)個(gè)。
15、素?cái)?shù)就是只能被就是只能被1 1和自身整除的正整數(shù),和自身整除的正整數(shù),1 1不是素?cái)?shù),不是素?cái)?shù),2 2是素?cái)?shù)。是素?cái)?shù)。要求定義和調(diào)用函數(shù)要求定義和調(diào)用函數(shù)prime (m)prime (m)判斷判斷m m是否為是否為素?cái)?shù),當(dāng)素?cái)?shù),當(dāng)m m為素?cái)?shù)時(shí)返回為素?cái)?shù)時(shí)返回1 1,否則返回,否則返回0 0。算法描述:算法描述:對對2 2100100之間的每個(gè)數(shù)進(jìn)行判斷,若是素?cái)?shù),則輸之間的每個(gè)數(shù)進(jìn)行判斷,若是素?cái)?shù),則輸出該數(shù)。出該數(shù)。for(m = 2; m = 100; m+) for(m = 2; m = 100; m+) if ( if (m m是素?cái)?shù)是素?cái)?shù)) ) printf(%d , m); p
16、rintf(%d , m); prime(m) != 0prime(m) != 0#include #include int main(void) int count, m; int prime (int m); count = 0; for(m = 2; m = 100; m+) if ( prime(m) != 0 ) printf(%6d, m ); count+; if (count %10 = 0) printf (n); printf (n);int prime (int m) int i, n; if ( m = 1 ) return 0; n = sqrt (m); for(
17、i = 2; i = n; i+) if (m % i = 0) return 0; return 1; 局部變量和全局變量局部變量和全局變量 變量生命周期和靜態(tài)局部變量變量生命周期和靜態(tài)局部變量 局部變量局部變量 在函數(shù)內(nèi)定義的變量(包括形參)在函數(shù)內(nèi)定義的變量(包括形參)作用范圍作用范圍:本函數(shù)內(nèi)部本函數(shù)內(nèi)部 定義在復(fù)合語句內(nèi)的變量定義在復(fù)合語句內(nèi)的變量作用范圍作用范圍:復(fù)合語句內(nèi)部復(fù)合語句內(nèi)部 全局變量全局變量 在函數(shù)以外定義的變量,不從屬于任一函數(shù)。在函數(shù)以外定義的變量,不從屬于任一函數(shù)。作用范圍作用范圍:從定義處到源文件結(jié)束從定義處到源文件結(jié)束(包括各函數(shù))(包括各函數(shù))#inclu
18、de int main (void) int a; a = 1; / /* * 復(fù)合語句開始復(fù)合語句開始 * */ / int b = 2; b = a + b; a = a + b; / /* * 復(fù)合語句結(jié)束復(fù)合語句結(jié)束 * */ / printf (%d , a ); return 0;b:b:小范圍內(nèi)的臨時(shí)變量小范圍內(nèi)的臨時(shí)變量 4#include stdio.hint x; /* 定義全局變量定義全局變量x */int f( ) int x = 4; /* x為局部變量為局部變量 */ return x;int main(void) int a = 1; x = a; /* 對全局變
19、量對全局變量 x 賦值賦值 */ a = f( ); /* a的值為的值為4 */ int b = 2; b = a + b; /* b的值為的值為4 */ x = x + b; /* 全局變量運(yùn)算全局變量運(yùn)算 */ printf(%d %d , a, x); return 0;4, 7若局部變量與全局變量若局部變量與全局變量同名,局部變量優(yōu)先同名,局部變量優(yōu)先int x=1;void main( ) int a=2; . int b=3; . f( ); .int t=4 ;void f( ) int x=5, b=6; .int a=7; x=? a=? b=?b=? x=5 b=6 t=4 a沒定義沒定義 x=? b=? t=? a=? 自動(dòng)變量(自動(dòng)變量(autoauto): : 普通的局部變量普通的局部變量int x, y; auto int x, y;char c1; auto char c1;函數(shù)調(diào)用時(shí),定義變量,分配存儲(chǔ)單元函數(shù)調(diào)用時(shí),定義變量,分配存儲(chǔ)單元。函數(shù)調(diào)用結(jié)束,收回存儲(chǔ)單元函數(shù)調(diào)用結(jié)束,收回存儲(chǔ)單元。 全局變量全局變量:從:從程序程序執(zhí)行開始,到程序的結(jié)束執(zhí)行開始,到程序的結(jié)束,存儲(chǔ)存儲(chǔ)單元始終保持單元始終保持。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國數(shù)字出版行業(yè)市場運(yùn)營動(dòng)態(tài)調(diào)研與發(fā)展建議咨詢報(bào)告
- 電子商務(wù)師中級模擬考試題與參考答案
- 北京市一七一中學(xué)2025年高考適應(yīng)性考試英語試卷含解析
- 驗(yàn)光員測試題(含答案)
- 車工高級工練習(xí)題(附參考答案)
- 職業(yè)技術(shù)學(xué)院2024級證券實(shí)務(wù)專業(yè)人才培養(yǎng)方案
- 2025年海南省海口九中等學(xué)校聯(lián)考中考數(shù)學(xué)一模試題(原卷版+解析版)
- 院感爆發(fā)處置規(guī)范理論考核試題
- 游樂設(shè)施施工項(xiàng)目成本效益分析考核試卷
- 畜牧業(yè)養(yǎng)殖廢棄物處理政策效果與優(yōu)化建議考核試卷
- 用教學(xué)案例解讀修訂版小學(xué)數(shù)學(xué)課標(biāo)
- 第九章-人類與自然地理環(huán)境.課件
- 中考動(dòng)員大會(huì)校長演講稿
- 各種各樣的房子課件
- 課題申報(bào)書:產(chǎn)教融合視域下職業(yè)教育賦能新質(zhì)生產(chǎn)力的模型構(gòu)建和實(shí)現(xiàn)路徑研究
- 臨床試驗(yàn)入組經(jīng)驗(yàn)分享
- 跨國合作:應(yīng)對全球傳染病挑戰(zhàn)
- 《永輝超市S店庫存管理問題及產(chǎn)生原因和優(yōu)化建議》8700字(論文)
- 《光儲(chǔ)充一體化電站技術(shù)規(guī)范》標(biāo)準(zhǔn)編制說明+征求意見稿
- 《電力人工智能平臺樣本標(biāo)準(zhǔn)規(guī)范編制說明》
- 財(cái)報(bào)分析-伊利
評論
0/150
提交評論